Andy's Blog » » mysql的SQL_CALC_FOUND_ROWS 使用

mysql的SQL_CALC_FOUND_ROWS 使用

我们一般用 COUNT() 或者 mysql_num_rows() 来获取查询的行数;
在MySQL4,5里面,有 SQL_CALC_FOUND_ROWS 可以在查询的同时,计算行数:

$query = "SELECT SQL_CALC_FOUND_ROWS * FROM title WHERE ID >1000 LIMIT 10;";
$result = $db->query($query);
$line = $db->fetch_row($db->query("SELECT FOUND_ROWS();"));
print_r($line);

此时,不用额外的查询,即可得到

SELECT count(id) FROM tabled WHERE id>1000;

这样子的结果了。

不过,http://dev.mysql.com/doc/refman/5.1/zh/optimization.html#limit-optimization 说:
只要MySQL已经发送了需要的行数到客户,它将放弃查询,除非你正使用SQL_CALC_FOUND_ROWS。

Incoming search terms:

Tags: mysql

本文地址: http://www.21andy.com/new/20071214/722.html

3 评论 to “PHP开源CMS之MODx”

  1. xLight 于 2007-12-14 15:20:46 发表:

    在一个良好索引的表中,效率会更高吗?
    有没有测试过?

  2. Andy 于 2007-12-14 20:47:49 发表:

    写法不同而已
    效率我觉得没什么差别

  3. 小蔡 于 2009-08-08 09:24:03 发表:

    SQL_CALC_FOUND_ROWS is much slower than COUNT(*)
    http://bugs.mysql.com/bug.php?id=19553