使用键加速SELECT DISTINCT

时间:2011-08-08 05:16:27

标签: mysql optimization select

如果我在一个有100行的表上使用SELECT DISTINCT查询,其中98个表的条目相同而另外2个相同,那么它是否仍会遍历所有100行只返回2个不同的结果?

有没有办法使用索引/键等,以便它不是通过所有100行,而是通过2行?

#### EDIT #####

所以我添加了这个索引:

KEY `column` (`column`(1)),

但是当我做的时候

EXPLAIN SELECT DISTINCT column FROM tablename

它仍然说它遍历所有行而不仅仅是不同的行

2 个答案:

答案 0 :(得分:6)

使用DISTINCT在要查询的列或列集上创建索引将加快查询速度。它不会查看每一行,而是使用索引中的两个条目。虽然只有100行,但差异甚至可能无法检测到。

答案 1 :(得分:0)

我正在做类似的事情。我试图从400Mill行的表中获取不同的值。

我甚至拥有该属性的关键字。它仍然在进行全面扫描。唯一的区别是它是全索引扫描而不是光盘扫描。

我只有10个不同的值,但即使在5分钟后也没有结果我杀了它。