2010-04-07 57 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