Поэтому я пытаюсь выяснить, что быстрее db_query, db_select или EntityFieldQuery. В настоящее время я использую EntityFieldQuery. Я собираю около 1600 записей узлов.
Я понимаю, что это может обременять систему, поэтому я просто хочу выяснить, какой вариант лучше всего захватить 1600 узлов. Бритье секунд или даже миллисекунд будет иметь большое значение для приложения, которое я создаю.
Заранее спасибо за ваши ответы.
Ответы:
Если коротко ответить на ваш вопрос, db_query - самый быстрый! Вот некоторые причины, факты и цифры, составленные из разных вопросов, источников:
Простое гугление этого вопроса дает следующие результаты:
и это
Если вы заметили выше, db_select выполняет больше вызовов функций и использует больше памяти, чем db_query.
Я думаю, что выбор должен быть основан исключительно на ваших требованиях. EntityFieldQuery может быть медленнее, но предлагает много преимуществ, таких как простой синтаксис, возможность хранения полей с возможностью подключения, слабая связь и многие другие.
источник
Это очень плохая идея, для 1600 узлов не обходить API-интерфейсы и использовать EntityFieldQuery. Вы оптимизируете не ту вещь.
источник
Если вы просто хотите получить полевые данные со всех 1600 узлов, EFQE может быть полезен. Если у вас уже есть EFQ, вы сможете выяснить, что вам нужно, заглянув на страницу с песочницей.
источник