gpt4 book ai didi

mysql - Zend 分页器运行速度非常慢 1.12

转载 作者:行者123 更新时间:2023-11-30 22:55:13 24 4
gpt4 key购买 nike

我正在使用 zend paginator 获取记录并列出相同的记录。

四个联接,我已经为所有相应的字段编制了索引,并且我只获得了在所有表中列出的必填字段。记录总数可能约为 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;

最佳答案

查看您的代码,我发现您可以改进的地方很少,如下所示。

  • 不要使用“SELECT * FROM”,只选择你需要的字段。
  • 查看比原始查询快得多。
  • 解释查询以检查执行时间等。

例如:

CREATE VIEW USER_DATA_VIEW AS
SELECT
T1.column1,T1.column2,T1.column3
T2.column1,T2.column2,T3.column1
T3.column2,T4.column1,T5.column1
....
FROM test1 as T1
JOIN test2 as T2 T2.id = T1.test2_id
LEFT JOIN test3 as T3 T3.id = T1.test3_id
JOIN test4 as T4 T4.id = T3.test3_id
JOIN test5 as T5 T5.id = T5.test4_id

现在使用 VIEW 检索数据。

SELECT column(s) FROM USER_DATA_VIEW 

像下面这样从 VIEW 中检索数据,使用 LIMIT 子句也是另一个最佳选择。

$modelObject = new Your_Model_View;

$select = $this->select();
$modelObject->fetchAll($select);

希望对您有所帮助!

干杯!

关于mysql - Zend 分页器运行速度非常慢 1.12,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26708731/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com