Próbuję więc dowiedzieć się, co jest szybsze db_query, db_select lub EntityFieldQuery. Obecnie używam EntityFieldQuery. Zbieram około 1600 pozycji węzłów.
Zdaję sobie sprawę, że może to obciążać system, więc chcę po prostu dowiedzieć się, która opcja jest najlepsza do przechwycenia 1600 węzłów. Odgrywanie sekund, a nawet milisekund ma duże znaczenie w aplikacji, którą tworzę.
Dzięki z góry za odpowiedzi.
Odpowiedzi:
Krótko mówiąc, aby odpowiedzieć na twoje pytanie, db_query jest najszybszy! Oto kilka powodów, faktów i liczb zebranych z różnych pytań, źródeł:
Proste wyszukiwanie w Google na to pytanie, wymyśl następujące wyniki:
i to
Jeśli zauważysz powyżej, db_select wykonuje więcej wywołań funkcji i wykorzystuje więcej pamięci niż db_query.
Myślę, że wybór powinien opierać się wyłącznie na twoich wymaganiach. EntityFieldQuery może być wolniejszy, ale oferuje wiele zalet, takich jak prosta składnia, pamięć w terenie jest podłączana, luźne sprzęganie i wiele innych.
źródło
To bardzo zły pomysł, bo w przypadku 1600 węzłów nie należy obchodzić interfejsów API i używać EntityFieldQuery. Optymalizujesz niewłaściwą rzecz.
źródło
Jeśli potrzebujesz tylko danych pól ze wszystkich 1600 węzłów, EFQE może być pomocne. Jeśli masz już EFQ, powinieneś być w stanie dowiedzieć się, czego potrzebujesz, patrząc na stronę piaskownicy.
źródło