เพื่อตอบคำถามของคุณโดยย่อ db_query นั้นเร็วที่สุด! นี่คือเหตุผลข้อเท็จจริงและตัวเลขที่รวบรวมจากคำถามที่แตกต่างกันแหล่งที่มา:
googling อย่างง่ายของคำถามนี้มากับผลลัพธ์ต่อไปนี้:
For simple queries, db_query() is 22% faster than db_select()
For simple queries, db_query() is 124% faster than EFQ
For queries with two joins, db_query() is 29% faster than db_select()
และนี่
db_query():
Total Incl. Wall Time (microsec): 796 microsecs
Total Incl. CPU (microsecs): 0 microsecs
Total Incl. MemUse (bytes): 123,352 bytes
Total Incl. PeakMemUse (bytes): 124,248 bytes
Number of Function Calls: 38
db_select()
Total Incl. Wall Time (microsec): 1,118 microsecs
Total Incl. CPU (microsecs): 0 microsecs
Total Incl. MemUse (bytes): 425,216 bytes
Total Incl. PeakMemUse (bytes): 436,392 bytes
Number of Function Calls: 88
ถ้าคุณสังเกตเห็นข้างต้น db_select ทำการเรียกใช้ฟังก์ชันมากขึ้นและใช้หน่วยความจำมากกว่า db_query
- ดูที่นี่เพื่อดูเหตุผลที่จะใช้ db_select
- ดูที่นี่เพื่อเหตุผลว่าทำไมถึงต้องใช้ EntityFieldQuery บน db_select
- ดูที่นี่สำหรับการเปรียบเทียบประสิทธิภาพของ db_query และ db_select
ฉันเดาว่าตัวเลือกควรเป็นไปตามความต้องการของคุณ EntityFieldQuery อาจช้าลง แต่มีข้อได้เปรียบมากมายเช่นไวยากรณ์แบบง่ายที่เก็บข้อมูลฟิลด์สามารถเสียบได้ข้อต่อหลวมและอีกมากมาย