1
我正在使用zend paginator用於獲取記錄並列出相同的記錄。Zend paginator運行速度很慢1.12
有四個連接和我已經索引所有各自的字段,我只獲得所有表中列出的必填字段。總記錄數可能是500萬約。我試圖優化最大和最後我發現這下面的代碼是最好的。
$select = new Zend_Paginator_Adapter_DbSelect($select);
$select->count($select);
$paginator = new Zend_Paginator($select);
但即使這樣,也需要超過40秒到加載頁面。有人能幫助我獲得更好的表現嗎?
我會稍微更新我的問題。以下是我的代碼
$query = $this->select();
$query->setIntegrityCheck(false);
$query->from(array('test1' => '*')))
->join(array('test2' => 'test2'), 'test2.id = test1.test2_id', array('*'))
->joinLeft(array('test3' => 'test3'), ("test1.test2_id = test3.test2_id'"), array('*')
->joinLeft(array('test4' => 'test4'), "test1.test4_id = test4.test4_id", array('*'))
->join(array('test5' => 'test5'), 'test1.test5_id = test5.id', array('*'));
$paginator = new Zend_Paginator(new Zend_Paginator_Adapter_DbTableSelect($query));
$paginator->setItemCountPerPage(ITEM_PER_PAGE);
$paginator->setCurrentPageNumber($this->getRequest()->getParam('page', 1));
$paginator->setPageRange(PAGE_RANGE);
$this->view->paginator = $paginator;
執行計劃會很好(在查詢之前使用EXPLAIN)。然後檢查需要如此長的分頁查詢或計數查詢。順便說一句 - >計數不需要參數,不需要。 – Volvox 2014-11-03 09:25:41
計數查詢需要** 24秒**才能執行。僅供參考,MySQL **發送數據**總共需要30秒才能獲取250萬條記錄。 – 2014-11-04 05:29:36