Sorunuzu kısaca cevaplamak için, db_query en hızlısıdır! Farklı sorulardan, kaynaklardan derlenen bazı nedenler, gerçekler ve rakamlar:
Bu sorunun basit bir Google arama, aşağıdaki sonuçları ile gelir:
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()
ve bu
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
Yukarıda fark ederseniz, db_select daha fazla işlev çağrısı yapar ve db_query'den daha fazla bellek kullanır.
- Db_select kullanımının nedenleri için buraya bakın
- EntityFieldQuery'nin db_select üzerinden kullanılmasının nedenleri için buraya bakın
- Db_query ve db_select performans karşılaştırması için buraya bakın
Seçim sadece gereksinimlerinize dayanmalıdır sanırım. EntityFieldQuery daha yavaş olabilir, ancak basit sözdizimi, alan depolaması takılabilir, gevşek bağlantı ve çok daha fazlası gibi birçok avantaj sunar.