ThaiSEOBoard.com

พัฒนาเว็บไซต์ => Programming => ข้อความที่เริ่มโดย: tamiyalagu ที่ 24 เมษายน 2010, 04:09:13



หัวข้อ: [SQL] select * ช้ากว่าหรือเร็วกว่าแบบกำหนด field
เริ่มหัวข้อโดย: tamiyalagu ที่ 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

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


หัวข้อ: Re: [SQL] select * ช้ากว่าหรือเร็วกว่าแบบกำหนด field
เริ่มหัวข้อโดย: xvlnw.com ที่ 24 เมษายน 2010, 04:16:22
select * from table ช้ากว่า ล้านเปอเซ็น


หัวข้อ: Re: [SQL] select * ช้ากว่าหรือเร็วกว่าแบบกำหนด field
เริ่มหัวข้อโดย: ฟาร์มเฮ้า ที่ 24 เมษายน 2010, 05:05:37
select * ช้ากว่าครับ

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

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


หัวข้อ: Re: [SQL] select * ช้ากว่าหรือเร็วกว่าแบบกำหนด field
เริ่มหัวข้อโดย: tamiyalagu ที่ 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 ลดลง เวลาเรียกข้อมูลจะใช้เวลาเท่ากันหรือเปล่าครับ


หัวข้อ: Re: [SQL] select * ช้ากว่าหรือเร็วกว่าแบบกำหนด field
เริ่มหัวข้อโดย: KaPong_Inter ที่ 24 เมษายน 2010, 10:45:27
มาเก็บความรู้  :o


หัวข้อ: Re: [SQL] select * ช้ากว่าหรือเร็วกว่าแบบกำหนด field
เริ่มหัวข้อโดย: GillBate ที่ 24 เมษายน 2010, 11:07:53
 :P มันอยู่ที่เราเซท where ครับ ถ้าเกิดเอาหมดทุกแถวทุกคอลัมก็ยังไงก็ได้ครับ
ถ้าจะเลือกเอามา ฟิลที่ใช้ค้นหา(where) เป็น PK จะเร็วสุด ถ้าไม่ใช้ PK ก็ทำเป็น index ครับ


หัวข้อ: Re: [SQL] select * ช้ากว่าหรือเร็วกว่าแบบกำหนด field
เริ่มหัวข้อโดย: SekRanger ที่ 24 เมษายน 2010, 11:20:54
ถ้าข้อมูลน้อยๆจะแทบไม่ต่างกันครับ

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

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

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

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


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

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


หัวข้อ: Re: [SQL] select * ช้ากว่าหรือเร็วกว่าแบบกำหนด field
เริ่มหัวข้อโดย: Twenty-One ที่ 24 เมษายน 2010, 11:26:19
select * ช้ามากครับ อย่าใช้เด็ดขาดถ้าไม่เอาทุก field


หัวข้อ: Re: [SQL] select * ช้ากว่าหรือเร็วกว่าแบบกำหนด field
เริ่มหัวข้อโดย: pugkung ที่ 24 เมษายน 2010, 12:33:33
ช้ากว่าครับ

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

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


หัวข้อ: Re: [SQL] select * ช้ากว่าหรือเร็วกว่าแบบกำหนด field
เริ่มหัวข้อโดย: Condothai ที่ 24 เมษายน 2010, 14:08:40
ช้ากว่าครับ แต่ถ้า row คุณไม่เยอะ ไม่แตกต่างหรอกครับ นอกจาะคุณมีเป็นหมื่น row :P


หัวข้อ: Re: [SQL] select * ช้ากว่าหรือเร็วกว่าแบบกำหนด field
เริ่มหัวข้อโดย: ponddeja ที่ 24 เมษายน 2010, 14:21:52
ตอนเขียนครับเร็ว

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

:wanwan004:


หัวข้อ: Re: [SQL] select * ช้ากว่าหรือเร็วกว่าแบบกำหนด field
เริ่มหัวข้อโดย: xvlnw.com ที่ 24 เมษายน 2010, 15:26:36
ตอนเขียนครับเร็ว

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

:wanwan004:

 :wanwan019: :wanwan019: :wanwan019: :wanwan019: