以下SQL查询是否会调用整个表扫描?

时间:2011-07-26 03:30:44

标签: mysql sql query-optimization

以下查询是否使用全表扫描?

如果是这样,有没有办法避免全表扫描?

  SELECT a.title, 
         COUNT(*) AS `count`
    FROM b
    JOIN a ON a.id = b.a_id
GROUP BY b.a_id

请注意,存在以下索引:

a PRIMARY id


b PRIMARY c_id THEN a_id

b INDEX a_id


以下是解释结果:

id  select_type  table  type    possible_keys  key      ref         rows  extra
--------------------------------------------------------------------------------------
1   SIMPLE       b      index   a_id           a_id     NULL        7     Using index
1   SIMPLE       a      eq_ref  PRIMARY        PRIMARY  dev.b.a_id  1

1 个答案:

答案 0 :(得分:3)

解释输出很明显,它在每个阶段都使用索引。 type列下的“全部”表示全表扫描。这看起来它将使用索引来准确访问您需要数据的那些记录。 (计数也仅使用索引完成。)有关解释EXPLAIN输出的详细信息,请参阅here