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

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

ThaiSEOBoard.comพัฒนาเว็บไซต์Programming[PHP + SQL] รบกวนขอคำแนะเกี่ยวกับการ query ครับ
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: [PHP + SQL] รบกวนขอคำแนะเกี่ยวกับการ query ครับ  (อ่าน 903 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
zatoli30
สมุนแก๊งเสียว
*

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

กระทู้: 967



ดูรายละเอียด
« เมื่อ: 18 กรกฎาคม 2014, 19:56:07 »

database ของผมมีอยู่ 3 table ตามข้างล่างนี้ครับ

main_pic
-id
-pic_id
-pic_title
-name_group

ข้อมูล
1 | 21457 |  เจมี่ บูเฮอร์ ชาวเน็ตตะลึง ใส่หรือไม่ | 1

pic_link
-id
-pic_ids
-pic_link

ข้อมูล
1 | 21457 | asxdf1.jpg
2 | 21457 | asxdf2.jpg
3 | 21457 | asxdf3.jpg

star_name
-id
-name_groups
-name

ข้อมูล
1 | 1 | เจมี่ บูเฮอร์

ไม่ทราบว่า จะ query แบบไหนให้ได้ประสิทธิภาพและเร็วมากที่สุดครับ


 wanwan017 wanwan017
« แก้ไขครั้งสุดท้าย: 18 กรกฎาคม 2014, 20:00:24 โดย zatoli30 » บันทึกการเข้า

รับเขียนสคริปเก็บข้อมูลสินค้า ตามสั่ง Nordstrom,6pm,Zappos,Homedepot,etc...  สอบถาม
max30012540
หัวหน้าแก๊งเสียว
*

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

กระทู้: 1,310



ดูรายละเอียด
« ตอบ #1 เมื่อ: 18 กรกฎาคม 2014, 20:13:33 »

อืม ... SQL นี่ MySQL หรือ MS SQL server ครับ wanwan016

ผมใช้แต่ MySQL ครับ แนะนำได้แต่ MySQL
ผมไม่แน่ใจนะ ว่าแบบไหนเร็วสุด ถ้าพูดถึงความเร็วมีอะไรหลายๆอย่างที่เกี่ยวข้อง ถ้าเกี่ยวกับโค้ดอย่างเดียว ที่ผมได้ทดสอบคือ ฟังก์ชั่นฝั่ง php ไม่ว่าจะเป็น PDO mysql mysqli มีความเร็วใกล้เคียงกันมากครับ ดังนั้นจะใช้แบบไหนก็ได้ครับ
ต่อมาคือปัญหาว่าส่งการคิวรี่แบบไหนให้เร็วที่สุด? หลายๆท่านแนะนำให้เลือกมาเฉพาะคอลัมน์ที่ใช้ เช่น
จะใช้แค่ id จาก
โค๊ด:
SELECT * FROM `....`
ก็เป็น
โค๊ด:
SELECT `id` FROM `....`
แต่บางท่านก็บอกว่าวิธีนี้มันทำงานช้านะ ส่วนท่านที่ใช้แบบนี้ก็เถียงว่ามันเปลืองเมมโมรี่นะ ข้อมูลที่ไม่ได้ใช้เอามาทำไม . . . เอาเป็นว่าผมใช้วิธีนี้กับทุกสคริปครับ ถึงจะไม่เร็วที่สุดก็ตาม แต่น่าจะประหยัดเมมโมรี่มากกว่า และโค้ดออกมาดูใส่ใจทำมากกว่าการใส่แค่ *

ปัญหาต่อมาคือข้อมูลมันเยอะมากกกกกก ทำไงดี ให้มันเร็วๆ อันนี้ต้องใช้สมองของท่านเองในการคิดวิเคราะ ว่าทำยังไง MySQL จะรับภาระน้อย ถึงน้อยที่สุด . . . เช่น แทนที่จะใช้การ group by ออกมา ตอนเพิ่มเรคอตก็ใช้วิธีตรวจว่ามีเรคอตหรือยัง ถ้ายังไม่มีก็เพิ่ม แล้วเก็บข้อมูลที่เหมือนกันลงเรคอตโดยใช้ json text ครับ (อาจจะงงๆในคำอธิบาย)

ผมเชื่อว่าได้ทำบ่อยๆ ลองแตกต่าง แล้วจะได้ประสบการเองว่าแบบไหนดีที่สุดครับ Embarrassed

รอท่านต่อไปชี้แนะต่อครับ ผมก็จะพยามติดตามกระทู้นี้ต่อไป คาดว่าความรู้จากกระทู้นี้น่าจะได้เยอะมากเลยครับ
บันทึกการเข้า
zatoli30
สมุนแก๊งเสียว
*

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

กระทู้: 967



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

MYSQL ครับ

ขอบคุณมากครับ สำหรับคำแนะนำ พอดีเพิ่งมาลองหัดดูครับ

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

รับเขียนสคริปเก็บข้อมูลสินค้า ตามสั่ง Nordstrom,6pm,Zappos,Homedepot,etc...  สอบถาม
xvlnw.com
Verified Seller
เจ้าพ่อบอร์ดเสียว
*

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

กระทู้: 5,905



ดูรายละเอียด เว็บไซต์
« ตอบ #3 เมื่อ: 18 กรกฎาคม 2014, 21:26:54 »

ผมแนะนำ
1. SELECT ทีละตาราง งดเว้น JOIN
2. SELECT เฉพาะฟิลล์ที่ต้องการเท่านั้น

เสริม
ทำ Index ในฟิลล์ที่ใช้ในเงื่อนไข WHERE
บันทึกการเข้า

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

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

กระทู้: 753



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

ไม่เข้าใจคำถามครับ อะไรคือเงื่อนไขในการ Search  Tongue Tongue

ส่วนตัวผมใช้ Where ก่อนครับ แล้วค่อยเอาไป Join เพราะว่าจะได้ไม่ต้อง Join เยอะ

จะให้ดียิ่งขึ้น Where มันทุกตารางก่อนครับ แล้วค่อยเอาผลลัพธืมาจอยกัน

(มั่วล้วนๆ)  wanwan004 wanwan004
บันทึกการเข้า

วีพีเอสถูก บริการเช่าเครื่อง Server (เสมือน)ราคาถูกจาก VPSTOOK เริ่มต้นเพียง 350 บาทเท่านั้น!!
ได้รับการบริการที่เหนือกว่าในราคาที่ถูกกว่าท้องตลาดทั่วไป
Free กันยิง Firewall (DNS Amp, NTP Amp, MSSQL Amp, SSDP)
สามารถอ่านรายละเอียดได้ที่ VPSTOOK.COM
siamjung
Verified Seller
ก๊วนเสียว
*

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

กระทู้: 419



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

คุณเก็บผลการค้นหายอดฮิตยังไงครับ? ทำสถิติไว้หรือป่าว คนเข้ากี่หมื่นกี่พัน ต้องกังวล query มาก ถ้ามัน query มหาศาลจริงๆลองแบบนี้ครับ

ลอง query ออกมาเสร็จ คุณทำ tables เก็บ most hits query ไว้อีก table สิครับ ทำ field count_view ไว้ แล้วก็ทำ field tag การค้นหาไว้ด้วย

คราวหน้ามีคน search มา คุณก็​ query ไปที่ table นั้น

ทุกคืนคุณก็สั่ง run cronjob เพื่ออัพเดทค่า table ที่ query ไว้

หรือคุณจะทำเป็น  file cache ไว้ก็ได้ครับ พูดแล้วอธิบายยาว ลองประยุกข์ด้วย mysql ง่ายๆไปก่อนครับ
บันทึกการเข้า

งดรับงาน custom coding เตรียมพบบริการใหม่เร็วๆนี้

รับทำ PHP หรือปรับระบบระดับ bigbig เน้น cache คนเข้าแบบกระฉูดๆ <- สมัยก่อน

KendoUI,Ajax,Json,Custom Framework,JqueryUI,Adodb,Memcache,Smarty <- สมัยก่อน

Indicator สัญญาณเทรดคมๆ

App เรียนเทรดพื้นฐาน
หน้า: [1]   ขึ้นบน
พิมพ์