сведение к минимуму запросов в Zend - PullRequest
0 голосов
/ 26 октября 2010

первое, что я хочу знать между двумя алгоритмами, какой из них лучше

выберите table1. * Из внутреннего объединения таблиц table2 на table1.id = table2.table1_id;

и затем извлечь или

выберите * из таблицы2;

и затем использование цикла foreach

выберите * из таблицы1, где table1.id = table2.table1_id

* Пожалуйста, скажите мне правдоподобную причину также

и теперь я использую Zend, и я считаю, что первый из них быстрее и лучше, чем второй (я не знаю почему ... просто некоторые предвзятые мнения)

и в профиле Zend DB, каждый раз, когда я получаю запрос: ОПИСАТЬ menu_items время: 0.00084590911865234

есть ли способ минимизировать это?

и, пожалуйста, скажите, как объединить две таблицы в Zend, используя компоненты Zend

С уважением,

1 Ответ

1 голос
/ 26 октября 2010

Использование внутреннего соединения происходит быстрее, чем цикл php, из-за времени ответа на запрос. В первом вы сделаете только один запрос, а во втором - много. База данных готова к получению данных, это означает, что это намного быстрее, чем объединять таблицы вручную с помощью php с помощью различных запросов.

Чтобы присоединиться к Zend, вам нужно это (при условии, что вы находитесь на Zend_Db_Table):

$select = $this->select()->setIntegrityCheck(false);
$select->from(array('t1'=>'table1'))
       ->join(array('t2'=>'table2'),'t2.table1_id =t1.id','*')
       ->where('t1.deleted =?',0) 
       ->group('t1.id')
       ->order('t1.date DESC')
       ->limit(4);
$result = $this->fetchAll($select);

Чтобы предотвратить запросы DESCRIBE, вы можете жестко закодировать структуру таблицы или кэшировать ее. Проверьте здесь:

http://framework.zend.com/manual/en/performance.database.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...