1

我开始使用 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);

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

4

2 回答 2

1

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

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

注意:DbSelect 和 DbTableSelect 适配器不会选择给定查询的每个匹配行,而是只检索显示当前页面所需的最少量数据。因此,动态生成第二个查询以确定匹配行的总数。但是,可以自己直接提供计数或计数查询。有关详细信息,请参阅 DbSelect 适配器中的 setRowCount() 方法。

于 2010-04-07T13:11:38.057 回答
0

如果有的话,将两者合并并不会真正提高性能。实际的选择内容中包含限制语句(因为您试图获取数据库中整个表的子集),其中计数需要计算数据库中的所有行。这样做的原因是为了避免为了获得计数而不得不选择非常大的数据集。

于 2010-04-07T13:43:55.123 回答