ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์Programmingดึงข้อมูล 2 ฟิวล์ จากตาางที่มีหลายฟิวล์มันจะช้ากว่าหรือเปล่าครับ
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: ดึงข้อมูล 2 ฟิวล์ จากตาางที่มีหลายฟิวล์มันจะช้ากว่าหรือเปล่าครับ  (อ่าน 1763 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
hurahura
สมุนแก๊งเสียว
*

พลังน้ำใจ: 20
ออฟไลน์ ออฟไลน์

กระทู้: 868



ดูรายละเอียด
« เมื่อ: 09 กรกฎาคม 2014, 20:03:08 »

สมติมีตารางอยู่มีข้อมูลอยู่เพียบเลย เราต้องการดึงข้อมูลเฉพาะ A กับ H
แต่ filed อื่นมีข้อมูลอยู่และเป็นข้อมูลขนาดใหญ่ด้วยพวกบทความอะไรแบบนี้

กับดึงข้อมูล A กับ H เหมือนกัน แต่ในตารางนั้นมีแต่ 2 ฟิวล์ อยากทราบว่าความเร็วเท่ากันหรือเปล่าครับ




ย้ำอีกครั้ง ไม่ได้ถามว่า select a,h กับ select * อะไรเร็วกว่ากัน

แต่ถามว่า select a,h เหมือนกัน แต่ตารางหนึ่งมี ฟิวล์อื่นด้วย กับอีกตารางมีแค่ 2 ฟิวล์ มันเร็วเท่ากันหรือไม่

« แก้ไขครั้งสุดท้าย: 09 กรกฎาคม 2014, 23:54:35 โดย hurahura » บันทึกการเข้า
mikeyx
Verified Seller
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 268
ออฟไลน์ ออฟไลน์

กระทู้: 4,009



ดูรายละเอียด เว็บไซต์
« ตอบ #1 เมื่อ: 09 กรกฎาคม 2014, 20:24:10 »

select * ช้ากว่า
select a,h

ปัจจัยอื่น ๆ คือจำนวนแถว ยิ่งมาก ๆ มันบวมก็ช้าเองครับ

เคยทำระบบเก็บสถิติ ทำจนเว็บตัวเองล่ม
บันทึกการเข้า
unaii
ก๊วนเสียว
*

พลังน้ำใจ: 11
ออฟไลน์ ออฟไลน์

กระทู้: 206



ดูรายละเอียด
« ตอบ #2 เมื่อ: 09 กรกฎาคม 2014, 20:30:28 »

select * ช้ากว่า
select a,h

ปัจจัยอื่น ๆ คือจำนวนแถว ยิ่งมาก ๆ มันบวมก็ช้าเองครับ

เคยทำระบบเก็บสถิติ ทำจนเว็บตัวเองล่ม

ตามนี้เลยครับ เป็นสิ่งที่ควรทำในขั้นตอนการ optimize โปรแกรมเลย จะเห็นความชัดเจนมากๆ กับข้อมูลขนาดใหญ่ เคยทดสอบกับฐานข้อมูลทะเบียนราษฏร์และฐานข้อมูลของสำนักงานตำรวจแห่งชาติครับ
บันทึกการเข้า
hurahura
สมุนแก๊งเสียว
*

พลังน้ำใจ: 20
ออฟไลน์ ออฟไลน์

กระทู้: 868



ดูรายละเอียด
« ตอบ #3 เมื่อ: 09 กรกฎาคม 2014, 20:48:44 »

ไม่ได้หมายถึงให้เทียบ select * กับ select เลือกฟิวล์ นะครับ

ให้ select a,h เหมือนกัน แต่อันนึงเลือกจากตารางที่มีฟิวล์อื่นอยู่ด้วย แต่อีกตารางมีแค่ 2 ฟิวล์
ใช้โค้ด sql เดียวกันมันจะเร็วเท่ากันหรือเปล่าครับ
บันทึกการเข้า
zapanlek
สมุนแก๊งเสียว
*

พลังน้ำใจ: 32
ออฟไลน์ ออฟไลน์

กระทู้: 501



ดูรายละเอียด
« ตอบ #4 เมื่อ: 09 กรกฎาคม 2014, 21:09:24 »

ไม่ได้หมายถึงให้เทียบ select * กับ select เลือกฟิวล์ นะครับ

ให้ select a,h เหมือนกัน แต่อันนึงเลือกจากตารางที่มีฟิวล์อื่นอยู่ด้วย แต่อีกตารางมีแค่ 2 ฟิวล์
ใช้โค้ด sql เดียวกันมันจะเร็วเท่ากันหรือเปล่าครับ

หากข้อมูลไม่ถึงแสน จะไม่เห็นความแตกต่างครับ ยิ่งเป็นล้านยิ่งเห็นครับ
บันทึกการเข้า
xvlnw.com
Verified Seller
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 493
ออฟไลน์ ออฟไลน์

กระทู้: 5,905



ดูรายละเอียด เว็บไซต์
« ตอบ #5 เมื่อ: 09 กรกฎาคม 2014, 21:16:22 »

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

หากเริ่มมีอาการช้า ก็ใช้พวก DB Cache เข้ามาช่วยได้คับ
บันทึกการเข้า

hurahura
สมุนแก๊งเสียว
*

พลังน้ำใจ: 20
ออฟไลน์ ออฟไลน์

กระทู้: 868



ดูรายละเอียด
« ตอบ #6 เมื่อ: 09 กรกฎาคม 2014, 23:12:11 »

โอเค ผมทดสอบแล้วครับ สรุปไว้เผื่อคนเข้ามาอ่านทีหลัง

แม้ว่าเราจะ select ข้อมูลแค่ a,h แต่ถ้าตารางนั้นมีฟิวล์อื่นอยู่ด้วย จะช้ากว่้าตารางที่ทีแค่ฟิวล์ a กับ h ครับ
บันทึกการเข้า
jpy193
Newbie
*

พลังน้ำใจ: 4
ออฟไลน์ ออฟไลน์

กระทู้: 49



ดูรายละเอียด
« ตอบ #7 เมื่อ: 09 กรกฎาคม 2014, 23:43:23 »

สนับสนุนอีกเสียงครับว่า ระบุชื่อฟิวลงไปเร็วกว่าและกินแรมเซิฟเวอร์น้อยกว่า จะเห็นความแตกต่างเลยถ้า query ตารางที่มีซักล้าน record

แต่ทั้งนี้ทั้งนั้นอยู่ที่เงื่อนไขในการเรียก(where) และการทำ index

บันทึกการเข้า
nut_anek
Verified Seller
สมุนแก๊งเสียว
*

พลังน้ำใจ: 149
ออฟไลน์ ออฟไลน์

กระทู้: 980



ดูรายละเอียด เว็บไซต์
« ตอบ #8 เมื่อ: 09 กรกฎาคม 2014, 23:45:39 »

ดึงจากแค่ 2 ฟิวยังไงก็เร็วกว่าอยู่แล้วครับ
บันทึกการเข้า

xvlnw.com
Verified Seller
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 493
ออฟไลน์ ออฟไลน์

กระทู้: 5,905



ดูรายละเอียด เว็บไซต์
« ตอบ #9 เมื่อ: 09 กรกฎาคม 2014, 23:50:15 »

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

หากเริ่มมีอาการช้า ก็ใช้พวก DB Cache เข้ามาช่วยได้คับ

ขอบคุณที่ไปลองแล้วมาแชร์ต่อครับ  wanwan020 wanwan020
บันทึกการเข้า

hurahura
สมุนแก๊งเสียว
*

พลังน้ำใจ: 20
ออฟไลน์ ออฟไลน์

กระทู้: 868



ดูรายละเอียด
« ตอบ #10 เมื่อ: 09 กรกฎาคม 2014, 23:52:05 »

-*-

มาย้ำอีกครั้ง คำถามไม่ได้ถามว่า ดึงจาก 2 ฟิวล์ กับดึงทั้งหมดอย่างไหนเร็วกว่ากัน

คำถามคือ

อ้างถึง
select a,h from table1

กับ
อ้างถึง
select a,h from table2

แบบไหนเร็วกว่ากัน


โดยที่ table1 มีฟิวล์อื่นอยู่ด้วย
ในขณะที่ table2 มีแค่ 2 ฟิวล์

---------------------------------------------

โดยหลักการมันควรจะเร็วเท่ากัน เพราะมันก็เลือกแค่ 2 ฟิวล์เหมือนกัน ฟิลว์อื่นจะมีข้อมูลหรือไม่ มีเยอะแค่ไหนไม่น่าเกี่ยว

แต่ผลจากที่ผมทดลองพบว่ามันต่างกันครับ


« แก้ไขครั้งสุดท้าย: 09 กรกฎาคม 2014, 23:58:52 โดย hurahura » บันทึกการเข้า
nut_anek
Verified Seller
สมุนแก๊งเสียว
*

พลังน้ำใจ: 149
ออฟไลน์ ออฟไลน์

กระทู้: 980



ดูรายละเอียด เว็บไซต์
« ตอบ #11 เมื่อ: 10 กรกฎาคม 2014, 00:01:02 »

-*-

มาย้ำอีกครั้ง คำถามไม่ได้ถามว่า ดึงจาก 2 ฟิวล์ กับดึงทั้งหมดอย่างไหนเร็วกว่ากัน

คำถามคือ

อ้างถึง
select a,h from table1

กับ
อ้างถึง
select a,h from table2

แบบไหนเร็วกว่ากัน


โดยที่ table1 มีฟิวล์อื่นอยู่ด้วย
ในขณะที่ table2 มีแค่ 2 ฟิวล์



ก็ได้คำตอบไปแล้วไม่ใช่หรอครับ

อ้างถึง
โอเค ผมทดสอบแล้วครับ สรุปไว้เผื่อคนเข้ามาอ่านทีหลัง

แม้ว่าเราจะ select ข้อมูลแค่ a,h แต่ถ้าตารางนั้นมีฟิวล์อื่นอยู่ด้วย จะช้ากว่้าตารางที่ทีแค่ฟิวล์ a กับ h ครับ

อ้างถึง
ดึงจากแค่ 2 ฟิวยังไงก็เร็วกว่าอยู่แล้วครับ

ผมว่า น่าจะเข้าใจถูกละนะคือ

เลือก h,a จาก a b c d e f g h
กับ เลือก h,a จาก a h

อันล่างเร็วกว่า

บันทึกการเข้า

hurahura
สมุนแก๊งเสียว
*

พลังน้ำใจ: 20
ออฟไลน์ ออฟไลน์

กระทู้: 868



ดูรายละเอียด
« ตอบ #12 เมื่อ: 10 กรกฎาคม 2014, 05:55:36 »


ก็ได้คำตอบไปแล้วไม่ใช่หรอครับ


ก็ได้คำตอบแล้ว แต่มีคนไม่เข้าใจคำถามอยู่ จึงมาอธิบายครับ
บันทึกการเข้า
watchlakorn
Newbie
*

พลังน้ำใจ: 6
ออฟไลน์ ออฟไลน์

กระทู้: 88



ดูรายละเอียด เว็บไซต์
« ตอบ #13 เมื่อ: 10 กรกฎาคม 2014, 09:10:30 »

ปัญหาต่อไปคือ สร้างตาราง ย่อยๆๆๆๆ พอเยอะใช้ join = ช้ากว่า select 1 ตาราง แต่เลือก อ่านแค่ field
บันทึกการเข้า

Patum Digital Technology LTD.
VPS | Reseller | Dedicated | Colocation
http://www.patumhost.com
หน้า: [1]   ขึ้นบน
พิมพ์