gpt4 book ai didi

php - Zend_分页器;它优化了吗?

转载 作者:可可西里 更新时间:2023-11-01 13:07:09 24 4
gpt4 key购买 nike

我即将在我的项目中使用 Zend_Paginator 类。我在互联网上找到了该类(class)的示例。其中之一是

$sql = 'SELECT * FROM table_name ';    
$result = $db->fetchAll($sql);
$page=$this->_getParam('page',1);
$paginator = Zend_Paginator::factory($result);
$paginator->setItemCountPerPage(10));
$paginator->setCurrentPageNumber($page);
$this->view->paginator=$paginator;

在第一行,它实际上选择了 table_name 中的所有行。如果我有一个包含 50000 行的表怎么办?那将是非常低效的。

还有其他方法可以使用 Zend Paginator 吗?

最佳答案

关于这个问题,您可能对手册的这一部分感兴趣:39.2.2. The DbSelect and DbTableSelect adapter ,其中说明(引用,强调我的):

... the database adapters require a more detailed explanation.
Contrary to popular believe, these adapters do not fetch all records from the database in order to count them.

Instead, the adapters manipulates the original query to produce the corresponding COUNT query.
Paginator then executes that COUNT query to get the number of rows.

This does require an extra round-trip to the database, but this is many times faster than fetching an entire result set and using count().
Especially with large collections of data.

(该页面上还有更多内容可供阅读 - 并且有一个示例应该可以为您提供更多信息)


这个想法是您将不再自己获取所有数据,但您会告诉Zend_Paginator它必须使用哪个适配器来访问您的数据.

这个适配器将特定于“通过 SQL 查询获取的数据”,并且知道如何直接在数据库端对其进行分页——这意味着只获取需要的内容,并且并非所有数据都像您最初那样。

关于php - Zend_分页器;它优化了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1829381/

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