tamiyalagu
คนรักเสียว
พลังน้ำใจ: 3
ออฟไลน์
กระทู้: 191
|
 |
« เมื่อ: 24 เมษายน 2010, 04:09:13 » |
|
ไม่ทราบว่า 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
Verified Seller
เจ้าพ่อบอร์ดเสียว
พลังน้ำใจ: 493
ออฟไลน์
กระทู้: 5,905
|
 |
« ตอบ #1 เมื่อ: 24 เมษายน 2010, 04:16:22 » |
|
select * from table ช้ากว่า ล้านเปอเซ็น
|
|
|
บันทึกการเข้า
|
|
|
|
ฟาร์มเฮ้า
หัวหน้าแก๊งเสียว
พลังน้ำใจ: 49
ออฟไลน์
กระทู้: 1,014
|
 |
« ตอบ #2 เมื่อ: 24 เมษายน 2010, 05:05:37 » |
|
select * ช้ากว่าครับ
มี 10 field filed ละ 10 ตัวอักษร ใช้แค่ 2 field
แทนที่จะดึงมาแค่ 20 ตัว ถ้า select * ก็ต้องดึงมาทั้ง 100 ตัว
|
|
|
บันทึกการเข้า
|
|
|
|
tamiyalagu
คนรักเสียว
พลังน้ำใจ: 3
ออฟไลน์
กระทู้: 191
|
 |
« ตอบ #3 เมื่อ: 24 เมษายน 2010, 08:49:59 » |
|
ขอบคุณครับ
ขึ้นอยู่กับปริมาณข้อมูลของ 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 ลดลง เวลาเรียกข้อมูลจะใช้เวลาเท่ากันหรือเปล่าครับ
|
|
|
บันทึกการเข้า
|
|
|
|
KaPong_Inter
สมุนแก๊งเสียว
พลังน้ำใจ: 13
ออฟไลน์
กระทู้: 683
|
 |
« ตอบ #4 เมื่อ: 24 เมษายน 2010, 10:45:27 » |
|
มาเก็บความรู้ 
|
|
|
บันทึกการเข้า
|
|
|
|
GillBate
หัวหน้าแก๊งเสียว
พลังน้ำใจ: 160
ออฟไลน์
กระทู้: 1,236
|
 |
« ตอบ #5 เมื่อ: 24 เมษายน 2010, 11:07:53 » |
|
 มันอยู่ที่เราเซท where ครับ ถ้าเกิดเอาหมดทุกแถวทุกคอลัมก็ยังไงก็ได้ครับ ถ้าจะเลือกเอามา ฟิลที่ใช้ค้นหา(where) เป็น PK จะเร็วสุด ถ้าไม่ใช้ PK ก็ทำเป็น index ครับ
|
|
|
บันทึกการเข้า
|
|
|
|
SekRanger
หัวหน้าแก๊งเสียว
พลังน้ำใจ: 130
ออฟไลน์
กระทู้: 1,564
|
 |
« ตอบ #6 เมื่อ: 24 เมษายน 2010, 11:20:54 » |
|
ถ้าข้อมูลน้อยๆจะแทบไม่ต่างกันครับ
แต่ผมทำงานอยู่ในบริษัทที่เป็นโกดังสินค้า ดึงข้อมูลทีเป็นพันเป็นหมื่น Row จะต้องพยายามประหยัดทรัพยากรให้มากที่สุด
Table บางอันมี Column ปาเข้าไป 30-40 คอลัมน์ และบางข้อมูลเป็น Descriptive(เช่นชื่อ บริษัท ชื่อสินค้า)ที่ยาวๆทั้งนั้น
ถ้าเราใช้ SELECT * มีหวังระบบล่มแน่ๆครับ เพราะยังไงๆ เวลา DBMS มันทำงานมันก็ต้องเก็บข้อมูลไว้ใน Buffer ก่อนส่งให้เรา
ถ้าเราดึงทั้งหมดเราก็ต้องใช้ Buffer เยอะขึ้น ถ้าดึง 50 คนพร้อมๆกันต่อให้มี Ram สักเป็น Terabyte ก็ไม่พอครับ
ข้อสรุปง่ายๆของผมคือ
SELECT แบบไหนก็ทำงานเร็วครับ แต่ถ้าดึงเฉพาะคอลัมน์จะใช้ทรัพยากรประหยัดมากกว่า ซึ่งส่งผลโดยรวมต่อการทำงานของ Server ครับ
|
|
|
บันทึกการเข้า
|
|
|
|
Twenty-One
Verified Seller
เจ้าพ่อบอร์ดเสียว
พลังน้ำใจ: 335
ออฟไลน์
กระทู้: 11,762
|
 |
« ตอบ #7 เมื่อ: 24 เมษายน 2010, 11:26:19 » |
|
select * ช้ามากครับ อย่าใช้เด็ดขาดถ้าไม่เอาทุก field
|
|
|
บันทึกการเข้า
|
# บริการโฮสติ้งขั้นเทพ 24/7 เปิดให้บริการ web hosting มาแล้ว 14 ปี ลูกค้ากว่า 40,000 ราย ให้ความไว้วางใจ # hosting  คุณภาพสูง ดูแลระบบโดย system engineer ประสบการณ์สูง # host  เร็ง แรง ไม่มีล่ม ติดตั้ง cms ฟรี # vps  ราคาถูก 50GB 999 บาท 
|
|
|
pugkung
Verified Seller
หัวหน้าแก๊งเสียว
พลังน้ำใจ: 196
ออฟไลน์
กระทู้: 2,681
|
 |
« ตอบ #8 เมื่อ: 24 เมษายน 2010, 12:33:33 » |
|
ช้ากว่าครับ แต่ผมก็ยังใช้  ปล.ไม่แนะนำให้ใช้นะครับ ผมใช้เพราะว่า รันบน local 
|
|
|
บันทึกการเข้า
|
|
|
|
Condothai
หัวหน้าแก๊งเสียว
พลังน้ำใจ: 56
ออฟไลน์
กระทู้: 1,024
|
 |
« ตอบ #9 เมื่อ: 24 เมษายน 2010, 14:08:40 » |
|
ช้ากว่าครับ แต่ถ้า row คุณไม่เยอะ ไม่แตกต่างหรอกครับ นอกจาะคุณมีเป็นหมื่น row 
|
|
|
บันทึกการเข้า
|
|
|
|
ponddeja
ก๊วนเสียว
พลังน้ำใจ: 18
ออฟไลน์
กระทู้: 246
|
 |
« ตอบ #10 เมื่อ: 24 เมษายน 2010, 14:21:52 » |
|
ตอนเขียนครับเร็ว แต่ตอนรันช้าครับ 
|
|
|
บันทึกการเข้า
|
|
|
|
xvlnw.com
Verified Seller
เจ้าพ่อบอร์ดเสียว
พลังน้ำใจ: 493
ออฟไลน์
กระทู้: 5,905
|
 |
« ตอบ #11 เมื่อ: 24 เมษายน 2010, 15:26:36 » |
|
|
|
|
บันทึกการเข้า
|
|
|
|
|