Performance Zend框架:需要关于实现Zend_Paginator_适配器计数()的建议

Performance Zend框架:需要关于实现Zend_Paginator_适配器计数()的建议,performance,zend-framework,Performance,Zend Framework,我想实现我自己的Zend\u Paginator\u适配器,所以我实现了Zend\u Paginator\u适配器接口()。我现在正在实现count()。如果我的问题是 SELECT * FROM Posts LIMIT ... // where limit is for pagination purposes 我需要获取表中的总行数(以count()返回) 有两个问题似乎是不可避免的?在我目前的项目中,我不太关心性能,但是需要两个查询,这让我思考,所以我想在这里提问 我说……获取表中的总行数

我想实现我自己的
Zend\u Paginator\u适配器
,所以我实现了
Zend\u Paginator\u适配器接口
()。我现在正在实现
count()
。如果我的问题是

SELECT * FROM Posts LIMIT ... // where limit is for pagination purposes
我需要获取表中的总行数(以
count()
返回)

有两个问题似乎是不可避免的?在我目前的项目中,我不太关心性能,但是需要两个查询,这让我思考,所以我想在这里提问

我说……获取表中的总行数(以count()返回)对吗?
从帖子中选择COUNT(*)

这当然是获得你想要的结果的一种方法。假设您的表/索引已优化,则运行第二个查询并没有那么糟糕

还有一种选择。您可以在原始查询中包含语句“SQL\u CALC\u FOUND\u ROWS”,那么您的第二个查询将只包括:

“选择找到的行();”

有关此功能的更多信息,请参阅以下链接:

当然,这假设您使用的是MySQL

我不太关心我目前的项目的性能,但需要2个查询,只是让我想

这当然是一个值得关注的问题,尤其是随着记录数量开始增加。Zend_Paginator令人敬畏的是,你可以 注入Zend_缓存_核心实例。这将确保您只运行这些查询最少的次数,这取决于您的查询时间 缓存生存期为

有关缓存功能的更多信息,请参见下页:

我说……获取表中的总行数(以count()返回)对吗?
从帖子中选择COUNT(*)

这当然是获得你想要的结果的一种方法。假设您的表/索引已优化,则运行第二个查询并没有那么糟糕

还有一种选择。您可以在原始查询中包含语句“SQL\u CALC\u FOUND\u ROWS”,那么您的第二个查询将只包括:

“选择找到的行();”

有关此功能的更多信息,请参阅以下链接:

当然,这假设您使用的是MySQL

我不太关心我目前的项目的性能,但需要2个查询,只是让我想

这当然是一个值得关注的问题,尤其是随着记录数量开始增加。Zend_Paginator令人敬畏的是,你可以 注入Zend_缓存_核心实例。这将确保您只运行这些查询最少的次数,这取决于您的查询时间 缓存生存期为

有关缓存功能的更多信息,请参见下页:

当我尝试
从posts LIMIT 0、3中选择SQL\u CALC\u FOUND\u ROWS*它返回了3行。表中的总行数为6。但是
SELECT FOUND\u ROWS()
总是返回1更新:我找到了答案。它在phpmyadmin/workbench这样的软件中不起作用,因为它们会向查询中添加内容。通过phpmyadmin或workbench这样的工具进行此操作的问题是,您运行的每个查询都是一个全新的会话……如果您将查询与“;”您将在同一个会话中运行这两个命令,并看到正确的结果。当我尝试
时,从posts LIMIT 0,3中选择SQL\u CALC\u FOUND\u ROWS*它返回了3行。表中的总行数为6。但是
SELECT FOUND\u ROWS()
总是返回1更新:我找到了答案。它在phpmyadmin/workbench这样的软件中不起作用,因为它们会向查询中添加内容通过phpmyadmin或workbench这样做的问题是,您运行的每个查询都是一个全新的会话……如果将查询与“;”串在一起,您将在同一个会话中运行这两个查询,并看到正确的结果。
SELECT COUNT(*) FROM Posts