计算表中行的最有效方法是什么?

时间:2011-03-11 02:49:25

标签: php mysql odbc

使用效率更高:

$sql = 'SELECT COUNT(*) AS count FROM users';
$odbcResult = OdbcExec($sql);
@odbc_fetch_row($odbcResult);
$count = @odbc_result($odbcResult, 'count');

或使用:

$sql = 'SELECT * FROM users';
$odbcResult = OdbcExec($sql);    
$count = odbc_num_rows($odbcResult);

4 个答案:

答案 0 :(得分:9)

前者。服务器正在做这项工作。它可能已经知道答案而不计算,

后者要求通过网络(以及内存)将所有行返回到您的程序。

答案 1 :(得分:2)

$sql = 'SELECT COUNT(id) AS count FROM users';
$odbcResult = OdbcExec($sql);
@odbc_fetch_row($odbcResult);
$count = @odbc_result($odbcResult, 'count');

或id之外的其他索引字段。它比COUNT(*)快一点,但count方法是要走的路。如果你需要对结果做些什么,方法2会更快,但只需要计算这个就是你想要的。

-edit-在字段之前添加了索引的关键字。下面的真实评论假设有一个id索引列(应该在任何速率的某个地方有一个索引)

答案 2 :(得分:2)

使用x> = 6填充10 ^ x个元素的表,并查看所需的时间。

答案 3 :(得分:2)

第一种方法肯定更快。但是COUNT(id)比COUNT(*)快 - 有问题。它们通常完全相同,并且有些情况下COUNT(id)实际上较慢(参见:http://www.mysqlperformanceblog.com/2007/04/10/count-vs-countcol/