如何将SQL_CALC_FOUND_ROWS和FOUND_ROWS()合并到现有Web应用程序中

时间:2009-03-04 15:45:48

标签: mysql

我刚刚阅读了有关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吗?可能存在哪些并发症?

还有其他想法/反馈吗?

2 个答案:

答案 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子句的返回行数。

这将仅在一种情况下使用元数据:

  1. 当您的表格使用MyISAM引擎时, AND
    • 当您的查询没有WHERE子句时。
  2. 在其他情况下,SQL_CALC_FOUND_ROWS将逐行计算行数,从而影响性能。

    不要将其附加到每个查询。

答案 1 :(得分:1)

1。)不,php没有这样的功能。

2。)我认为最好只在你真正需要的时候使用SQL_CALC_FOUND_ROWS。