[SQL] select * ช้ากว่าหรือเร็วกว่าแบบกำหนด field

เริ่มโดย tamiyalagu, 24 เมษายน 2010, 04:09:13

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

tamiyalagu

ไม่ทราบว่า sql มันทำงานยังไง ตามความเขาใจของผมเอง คิดว่าแบบ * น่าจะเร็วกว่า เพราะมันไม่ต้องเสียเวลาไปคัดว่าจะเอา field ไหนบ้าง  เจอก็ดึงมาหมดเลย แต่เหมือนเคยเห็นผ่านๆ บางเว็บบอก select * จะช้ากว่าแบบกำหนด field เลยมาถามให้แน่ใจครับ

และก็สงสัยว่าถ้าต้องกำหนด แล้วมันมีเยอะ มันไม่ยิ่งยา่วและยิ่งช้าเหรอ

อย่างสมมุติในตารางมี 15 field เราจะใช้ 10 field 
เขียนแบบนี้
select field-01, field-02, field-03, field-04, field-05, field-06, field-07, field-08, field-09, field-10 from table

จะเร็วกว่าแบบ
select * from table

หรือเปล่าครับ

xvlnw.com

[direct=https://cloudhost.in.th/wordpress-hosting]ツ ⓌⓄⓇⒹⓅⓇⒺⓈⓈ ⒽⓄⓈⓉⒾⓃⒼ [/direct] :wanwan014:  :D
[direct=https://cloudhost.in.th/cloudhosting.html]Cloud Hosting[/direct] [direct=https://cloudhost.in.th/cloudvps.html]Cloud Server[/direct] [direct=https://cloudhost.in.th/vpshosting.html]Cloud VPS Hosting[/direct] [direct=https://cloudhost.in.th/windowsvps.html]Cloud Windows[/direct] Tel: 080-348-0843 LINE: ixvlnw

ฟาร์มเฮ้า

select * ช้ากว่าครับ

มี 10 field filed ละ 10 ตัวอักษร ใช้แค่ 2 field

แทนที่จะดึงมาแค่ 20 ตัว ถ้า select * ก็ต้องดึงมาทั้ง 100 ตัว

tamiyalagu

ขอบคุณครับ

ขึ้นอยู่กับปริมาณข้อมูลของ field นั้นๆด้วยหรือเปล่าครับ

คือถ้ามี 15 เอาแค่ 2 ก็คงไม่ใช่ประเด็นอะไร แต่ถ้ามี 15 แต่เอาซัก 13 อันนี้มันน่าคิดว่าควรจะเขียนยังไง

สมมุติมี 15 field แต่ใช้ 13 field เหลือ 2 field ที่ไม่ใช้ ถ้าข้อมูล 2 field นั้นไม่เยอะ จะใช้ * ก็ไม่ต่างกันมากหรือเปล่าครับ?

แล้วถ้าจำนวน field ลดลง แต่ปริมาณข้อมูลเท่าเดิม แบบนี้จะยังเร็วขึ้นหรือเปล่าครับ

เช่น ของเดิมเป็น
field1   field2    field3    field4   field5    field6   
x         aaa       bbb      ccc       ddd      eee

ของใหม่ เอามายัดรวมกัน
field1   field2
x         aaa, bbb, ccc, ddd, eee

แบบนี้ปริมาณข้อมูลเท่ากัน แต่ field ลดลง เวลาเรียกข้อมูลจะใช้เวลาเท่ากันหรือเปล่าครับ


GillBate

 :P มันอยู่ที่เราเซท where ครับ ถ้าเกิดเอาหมดทุกแถวทุกคอลัมก็ยังไงก็ได้ครับ
ถ้าจะเลือกเอามา ฟิลที่ใช้ค้นหา(where) เป็น PK จะเร็วสุด ถ้าไม่ใช้ PK ก็ทำเป็น index ครับ

SekRanger

ถ้าข้อมูลน้อยๆจะแทบไม่ต่างกันครับ

แต่ผมทำงานอยู่ในบริษัทที่เป็นโกดังสินค้า ดึงข้อมูลทีเป็นพันเป็นหมื่น Row จะต้องพยายามประหยัดทรัพยากรให้มากที่สุด

Table บางอันมี Column ปาเข้าไป 30-40 คอลัมน์ และบางข้อมูลเป็น Descriptive(เช่นชื่อ บริษัท ชื่อสินค้า)ที่ยาวๆทั้งนั้น

ถ้าเราใช้ SELECT * มีหวังระบบล่มแน่ๆครับ เพราะยังไงๆ เวลา DBMS มันทำงานมันก็ต้องเก็บข้อมูลไว้ใน Buffer ก่อนส่งให้เรา

ถ้าเราดึงทั้งหมดเราก็ต้องใช้ Buffer เยอะขึ้น ถ้าดึง 50 คนพร้อมๆกันต่อให้มี Ram สักเป็น Terabyte ก็ไม่พอครับ


ข้อสรุปง่ายๆของผมคือ

SELECT แบบไหนก็ทำงานเร็วครับ แต่ถ้าดึงเฉพาะคอลัมน์จะใช้ทรัพยากรประหยัดมากกว่า ซึ่งส่งผลโดยรวมต่อการทำงานของ Server ครับ

Twenty-One

select * ช้ามากครับ อย่าใช้เด็ดขาดถ้าไม่เอาทุก field
# บริการโฮสติ้งขั้นเทพ 24/7 เปิดให้บริการ web hosting มาแล้ว 14 ปี ลูกค้ากว่า 40,000 ราย ให้ความไว้วางใจ
# [direct=https://www.hostneverdie.com]hosting[/direct] คุณภาพสูง ดูแลระบบโดย system engineer ประสบการณ์สูง
# [direct=https://www.hostneverdie.com]host[/direct] เร็ง แรง ไม่มีล่ม ติดตั้ง cms ฟรี
# [direct=https://www.hostneverdie.com/vps-server]vps[/direct] ราคาถูก 50GB 999 บาท

[direct=https://www.hostneverdie.com][/direct]

pugkung

ช้ากว่าครับ

แต่ผมก็ยังใช้  :wanwan014:

ปล.ไม่แนะนำให้ใช้นะครับ ผมใช้เพราะว่า รันบน local  :P

Condothai

ช้ากว่าครับ แต่ถ้า row คุณไม่เยอะ ไม่แตกต่างหรอกครับ นอกจาะคุณมีเป็นหมื่น row :P
[direct=https://instore.bnn.in.th]จำหน่ายสินค้าไอที[/direct]

ponddeja

ตอนเขียนครับเร็ว

แต่ตอนรันช้าครับ 

:wanwan004:

xvlnw.com

[direct=https://cloudhost.in.th/wordpress-hosting]ツ ⓌⓄⓇⒹⓅⓇⒺⓈⓈ ⒽⓄⓈⓉⒾⓃⒼ [/direct] :wanwan014:  :D
[direct=https://cloudhost.in.th/cloudhosting.html]Cloud Hosting[/direct] [direct=https://cloudhost.in.th/cloudvps.html]Cloud Server[/direct] [direct=https://cloudhost.in.th/vpshosting.html]Cloud VPS Hosting[/direct] [direct=https://cloudhost.in.th/windowsvps.html]Cloud Windows[/direct] Tel: 080-348-0843 LINE: ixvlnw