我刚刚阅读了有关mysql的SQL_CALC_FOUND_ROWS和FOUND_ROWS()的内容,它可以帮助您通过删除LIMIT条件来获取先前执行的查询的总结果大小。现在我想在现有的Web应用程序中使用此功能。
我有几种方法,但我不确定哪种方法最好:
1)PHP是否已经具有使用FOUND_ROWS()功能的功能?我正在使用带有mysqli的php 5和带有innodb存储引擎的mysql 5。
2)我正在构建的应用程序已经拥有了自己的数据访问对象,它包装了mysqli库。它负责生成常用的CRUD查询。我应该编辑此对象以在所有SELECT查询中包含SQL_CALC_FOUND_ROWS吗?可能存在哪些并发症?
还有其他想法/反馈吗?
答案 0 :(得分:2)
1)PHP是否已经具有使用
FOUND_ROWS()
功能的功能?我正在使用带有mysqli的php 5和带有innodb存储引擎的mysql 5。
我认为mysql_num_rows
做到了,但经过一番浏览后我觉得我可能错了。
更新:是的,我错了:)
2)我正在构建的应用程序已经拥有了自己的数据访问对象,它包装了mysqli库。它负责生成常用的
CRUD
查询。我是否应该编辑此对象以在所有SQL_CALC_FOUND_ROWS
个查询中包含SELECT
?可能存在哪些并发症?
SQL_CALC_FOUND_ROWS
会尝试计算查询中没有LIMIT
子句的返回行数。
这将仅在一种情况下使用元数据:
MyISAM
引擎时, AND
WHERE
子句时。在其他情况下,SQL_CALC_FOUND_ROWS
将逐行计算行数,从而影响性能。
不要将其附加到每个查询。
答案 1 :(得分:1)
1。)不,php没有这样的功能。
2。)我认为最好只在你真正需要的时候使用SQL_CALC_FOUND_ROWS。