SELECT SQL_CALC_FOUND_ROWS id FROM i_user LIMIT 3;
 和 SELECT id FROM i_user LIMIT 3 ; 有什么区别吗 SQL_CALC_FOUND_ROWS主要在什么情况下用

解决方案 »

  1.   

    加上这个参数 SQL_CALC_FOUND_ROWS,当你用 limit m,n  的时候,FOUND_ROWS()返回是是全部 记录总数而不是 这个 n参见下例
    mysql> select count(*) from t1;
    +----------+
    | count(*) |
    +----------+
    |   499999 |
    +----------+
    1 row in set (0.09 sec)mysql> select * from t1 limit 3;
    +----+------+-------+------+
    | id | c1   | c2    | i2   |
    +----+------+-------+------+
    |  1 | AA1  | BB342 |    1 |
    |  2 | AA2  | BB727 |    2 |
    |  3 | AA3  | BB611 |    3 |
    +----+------+-------+------+
    3 rows in set (0.34 sec)mysql> select FOUND_ROWS();
    +--------------+
    | FOUND_ROWS() |
    +--------------+
    |            3 |
    +--------------+
    1 row in set (0.03 sec)mysql> select SQL_CALC_FOUND_ROWS * from t1 limit 3;
    +----+------+-------+------+
    | id | c1   | c2    | i2   |
    +----+------+-------+------+
    |  1 | AA1  | BB342 |    1 |
    |  2 | AA2  | BB727 |    2 |
    |  3 | AA3  | BB611 |    3 |
    +----+------+-------+------+
    3 rows in set (0.00 sec)mysql> select FOUND_ROWS();
    +--------------+
    | FOUND_ROWS() |
    +--------------+
    |       499999 |
    +--------------+
    1 row in set (0.00 sec)mysql>
      

  2.   

    select SQL_CALC_FOUND_ROWS *** limit x,y

    select FOUND_ROWS();
    配合使用,得到记录的总数如果查询语句比较复杂,我就用 SQL_CALC_FOUND_ROWS + FOUND_ROWS();
    简单的查询,我就先
    select count(*) ***

    select * from table where *** limit x,y