|
|
|
เลือกข้อมูล อยากจะรู้ว่าพี่ ๆ มีวิธีในการเลือกข้อมูลมาแสดงอ่ะครับ แบบให้มันเร็ว เป็นคำสั่ง SQL |
|
|
|
|
|
|
|
อยู่ที่การออกแบบนะผมว่า ถ้าบอกว่าต้องการ query data ให้เร็ว ลองแยกเป็นเรื่องๆ ดูว่ามันเกี่ยวกับเรื่องอะไรบ้าง
1. ปริมาณข้อมูลที่อยู่ใน table
2. ชนิดของข้อมูลที่ select มาแสดงผล
3. เงื่อนไขในการดึงข้อมูล
4. ข้อมูลที่ใช้เป็นเงื่อนไขน่ะ มีการ optimize หรือทำ index ไว้หรือเปล่า (ตัวสำคัญเลย)
-- ** -- นี่แค่เรื่อง database นะ
5. ความเร็วของ network ระหว่าง web server ไป database server ถ้ามันเป็นเครื่องเดียวกันก็แล้วไป ไม่มีปัญหา
แต่ถ้าคนละเครื่องก็ต้องเอามาคิดด้วย
-- ** -- นี่เรื่อง network
6. การนำมาแสดงผล ตรงนี้ผมว่าทุกคนคงไม่มีปัญหาอะไร ก็วนลูปแสดงผลไป อันนี้ช้าเร็วอยู่ที่วิธีของแต่ละคนครับ เพราะเป็นขั้นตอนสุดท้ายหลังจาก ดึงข้อมูลมาได้แล้ว
-- ** -- นี่เรื่องการแสดงผล
ทีนี้ก็ถามกลับว่าที่อยากให้เร็วน่ะ คิดว่าเรามีปัญหาที่ส่วนไหนล่ะ แต่ที่เห็นถามๆ กันที่นี่คิดว่าน่าจะเป็นเรื่อง database นะ เหมือนไม่ค่อยสนใจเรื่องการออกแบบ database กันเท่าไร แค่สร้างๆ table มาให้เก็บข้อมูลได้จบ แต่ไม่ได้คิดเผื่อว่า ถ้ามันใช้งานจริง มีปริมาณข้อมูลมากระดับนึงแล้ว โปรแกรมเราจะเป็นยังไง ลองคิดเพิ่มดูครับ
|
|
|
|
|
Date :
2009-12-30 11:53:36 |
By :
salapao_codeman |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณครับ
|
|
|
|
|
Date :
2009-12-30 11:57:29 |
By :
ความรู้เท่าหางอึ่ง |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อือเป็นคำถามที่ดีครับ ผมเองก็สงสัยอยู่เหมือนกัน อยากจะถามให้แน่ชัดเหมือนกัน
ตอนนี้เท่าที่รู้น่ะครับ
- ไม่ใช้ * เช่น select * from xx ให้เลือกฟิลด์ที่ต้องการเลย เช่น select field1,field2,field3 from xx
- ใช้ mysql_assoc() แทน
- ใช้ limit เข้าช่วย
- ทำ index ฟิลด์ที่ถูกเรียกใช้งานบ่อย
- พยายามใช้ join แทน รวมตาราง เช่น select * from tbl1,tbl2 เปลี่ยนไปใช้ selet * from tbl1 inner join tbl2
ทั้งนี้ทั้งนั้นที่พูดมาก็ต้องขึ้นกับเงื่อนไขต่างๆด้วย
|
|
|
|
|
Date :
2009-12-30 12:09:12 |
By :
xbeginner01 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mysql_assoc() คือ mysql_fetch_assoc ตัวนี้ป่ะคับ
แล้วแตกต่างกันไหมระหว่าง mysql_fetch_array ส่วนมากผมใช้ mysql_fetch_assoc ครับ
- พยายามใช้ join แทน รวมตาราง เช่น select * from tbl1,tbl2 เปลี่ยนไปใช้ selet * from tbl1 inner join tbl2
ูู^^
ส่วนตัวนี้แรก ๆ ผมจะใช้แบบ select * from tbl1,tbl2 เหมือนที่คุณ xbeginner01 เลยคับ หลัง ๆ ก้อเริ่มเปลี่ยนละ
ขอบคุณครับ สำหรับความคิดเห็น
|
|
|
|
|
Date :
2009-12-30 12:46:57 |
By :
ความรู้เท่าหางอึ่ง |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 02
|