使用效率更高:
$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);
答案 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/)