Um Ihre Frage kurz zu beantworten: db_query ist die schnellste! Hier sind einige Gründe, Fakten und Zahlen aus verschiedenen Fragen, Quellen zusammengestellt:
Wenn Sie diese Frage einfach googeln, erhalten Sie die folgenden Ergebnisse:
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()
und das
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
Wenn Sie oben bemerken, führt db_select mehr Funktionsaufrufe durch und belegt mehr Speicher als db_query.
- Sehen Sie hier aus Gründen, warum die Verwendung db_select
- Sehen Sie hier aus Gründen, warum EntityFieldQuery über db_select verwenden
- Sehen Sie hier für Performance - Vergleich von db_query und db_select
Ich denke, die Auswahl sollte sich ausschließlich nach Ihren Anforderungen richten. EntityFieldQuery ist zwar langsamer, bietet jedoch viele Vorteile wie einfache Syntax, steckbare Feldspeicherung, lose Kopplung und vieles mehr.