2008年1月6日

在用limit查询的同时取得总的记录数

通常我们都用如下的sql来进行列表
SELECT COUNT(*) FROM users WHERE name LIKE ‘a%’;
SELECT name, email FROM users WHERE name LIKE ‘a%’ LIMIT 10;
但是从Mysql4.0.0开始,我们可以选择使用另外一个方式:
SELECT SQL_CALC_FOUND_ROWS name, email FROM users WHERE name LIKE ‘a%’ LIMIT 10;
SELECT FOUND_ROWS();
其中SQL_CALC_FOUND_ROWS 告诉Mysql将sql所处理的行数记录下来,FOUND_ROWS() 则取到了这个纪录。

虽然也是两个语句,但是只执行了一次主查询,所以效率比原来要高很多。

详细信息见这里 http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#id2890708

沒有留言: