2010-04-07 37 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适配器 只检索 数据所必需的最小量显示 当前页面。因此, 第二个查询动态生成 以确定匹配行的总数。但是,有可能 直接提供计数或计数 查询自己。有关更多信息,请参阅DbSelect适配器中的setRowCount() 方法以获取 。

+0

我已经有了'id'行的PRIMARY索引 – Poru 2010-04-07 13:16:05