Zend Paginator - 增加查询

时间:2010-04-07 13:04:17

标签: zend-framework 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);

我可以将两个查询合并为一个(为了更好的性能)吗?

2 个答案:

答案 0 :(得分:1)

确保在所选表的一个或多个基于int的列上有索引。因此计数查询不会有很多性能影响。您可以使用setRowCount()来提供计数(如果有的话)。

来自http://framework.zend.com/manual/en/zend.paginator.usage.html

  

注意:而不是选择每一个   匹配给定查询的行,   DbSelect和DbTableSelect适配器   只检索最小量的   显示所需的数据   当前页面。因此,a   第二个查询是动态生成的   确定总数   匹配行。但是,这是可能的   直接提供计数或计数   查询自己。查看setRowCount()   DbSelect适配器中的方法   更多信息。

答案 1 :(得分:0)

如果有的话,合并这两者并不会带来太大的性能提升。实际的select内容中包含limit语句(当您尝试获取数据库中整个表的子集时),其中count需要计算数据库中的所有行。这样做的原因是为了防止必须选择一组非常大的数据才能获得计数。