Я согласен с другими - и я тот, кто разработал и кодировал API табличных отношений в Zend Framework, который вы используете!
findDependentRowset()
полезно, если у вас уже есть ссылка на родительскую строку, и вам может понадобиться получить связанные строки. Эта функция неэффективна по сравнению с запросом, объединяющим обе таблицы. Вы никогда не должны вызывать findDependentRowset()
в цикле, если производительность вообще является приоритетом. Вместо этого напишите SQL-запрос, состоящий из JOIN обеих таблиц.
К сожалению, в ретроспективе целью Zend для их Framework была простота дизайна, а не производительность.
Если бы я продолжал работать в Zend, я бы попытался улучшить интерфейс Table с помощью удобного способа выполнять объединенные запросы к связанным объектам Zend_Db_Table. Решение, реализованное после того, как я покинул проект, состоит в том, чтобы создать объект Select и передать его в fetchAll()
, что ужасно ужасно.
edit: В ответ на ваш комментарий я приложил все усилия, чтобы создать решение с учетом набора требований. Я прекрасно себя чувствую из-за того, что я сделал. Но Zend - компания-разработчик IDE-инструментов, поэтому их ценность заключается в удобстве кодирования, а не в производительности во время выполнения. «Быстрая разработка приложений» может означать разработку быстрых приложений или быструю разработку приложений. Для компании, занимающейся инструментами, это означает последнее.