2010-04-07 1 views
1

Я начал использовать Zend_Paginator, , все работает отлично, но я заметил, что есть еще один запрос, который замедляет время загрузки. Дополнительный запрос:Zend_Paginator - Увеличить запросы

SELECT COUNT(1) AS `zend_paginator_row_count` FROM `content` 

нормальный запрос:

SELECT `content`.`id`, `content`.`name` FROM `content` LIMIT 2 

PHP:

$adapter = new Zend_Paginator_Adapter_DbSelect($table->select()->from($table, array('id', 'name'))); 
$paginator = new Zend_Paginator($adapter); 

Могу ли я объединить два querys в один (для лучшей производительности)?

ответ

0

Слияние двух на самом деле не будет иметь большого увеличения производительности, если таковое имеется. Фактический выбор содержимого содержит в нем предельный оператор (поскольку вы пытаетесь получить подмножество всей таблицы в базе данных), где счету нужно подсчитывать все строки в базе данных. Причина, по которой это делается, заключается в том, чтобы исключить необходимость выбора очень большого набора данных просто для получения счета.

1

Убедитесь, что у вас есть указатель на один или несколько столбцов, основанных на int выбранной таблицы. Таким образом, запрос на подсчет не будет иметь большого значения производительности. Вы можете использовать setRowCount(), чтобы предоставить счет (если он у вас есть).

От http://framework.zend.com/manual/en/zend.paginator.usage.html:

Примечание: Вместо выбора каждой соответствующей строки данного запроса, то DbSelect и DbTableSelect адаптеры получать только наименьшее количество данных, необходимых для отображения текущей страницы. Из-за этого второй запрос динамически генерируется , чтобы определить общее число совпадающих строк . Однако, возможно, , чтобы непосредственно поставить счет или число запросить себя. См. Метод setRowCount() в адаптере DbSelect для .

+0

У меня уже есть PRIMARY Index в строке 'id' – Poru

 Смежные вопросы

  • Нет связанных вопросов^_^