mysql查询速度的差异

时间:2012-03-19 16:04:01

标签: php mysql sql

假设我的数据库中有1kk记录。

现在我需要选择一些数据,而且我还需要知道我选择了多少个字段,所以我的问题是:

运行一个查询来计算这样的数据是否更好:

SELECT COUNT("id") from table where something = 'something'

之后再运行一个querio进行选择:

SELECT 'some_field' from table where something = 'something';

也许最好只选择数据,然后用php计算它:

count($rows);

或许还有更好的方法可以做到,例如在一个查询中完成所有操作?

3 个答案:

答案 0 :(得分:2)

在线之间阅读,我认为你可能会追求的是SQL_CALC_FOUND_ROWS。这允许您选择结果集的一部分(使用LIMIT子句),并仍然计算单个操作中匹配行的总数。您仍然使用两个查询,但数据中的实际搜索操作只发生一次:

// First get the results you want...
$result = mysql_query("
  SELECT SQL_CALC_FOUND_ROWS
  FROM `table`
  WHERE `something` = 'something'
  LIMIT 0, 10
");

// ...now get the total number of results
$numRows = mysql_query("
  SELECT FOUND_ROWS()
");
$numRows = mysql_fetch_row($numRows);
$numRows = $numRows[0];

答案 1 :(得分:1)

如果您获取所有1000条记录,那么您可以在获取时进行计数:

$res=mysql_query("SELECT 'some_field' from table where something = 'something'");
while($r = mysql_fetch_*($res)) {
  $count++;

 //> Do stuff
} 

这样您只需进行一次查询而不使用mysql_num_rows();

答案 2 :(得分:1)

一个查询是:

SELECT Count(*) AS NumRows, some_field from table 
GROUP BY some_field where something = 'something';
相关问题