kam*_*lot 1 php mysql zend-framework
所以我现在正在使用Zend Paginator,因为我的印象是它最终没有使用LIMIT x OFFSET y或LIMIT x,y查询,因此即使我试图寻找页面99999也是有效的,因为LIMIT OFFSET需要搜索来自的所有项目如果我使用LIMIT OFFSET,那么第一个到第99999页的那个......我在这个假设中是正确还是不正确?
是的,在DbSelect和DbTableSelect适配器中,Zend_Paginator设置LIMIT和OFFSET(或等效语法,由Db适配器确定).在两个适配器中,出现以下行:
...
$this->_select->limit($itemCountPerPage, $offset);
...
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请阅读library/Zend/Paginator/Adapter/Db*Select.php中的代码.
你是对的,带有大量OFFSET的查询在MySQL中运行得比较慢.
还有其他技术可以优化分页.
见http://www.mysqlperformanceblog.com/2008/09/24/four-ways-to-optimize-paginated-displays/