如果我在一个有100行的表上使用SELECT DISTINCT查询,其中98个表的条目相同而另外2个相同,那么它是否仍会遍历所有100行只返回2个不同的结果?
有没有办法使用索引/键等,以便它不是通过所有100行,而是通过2行?
#### EDIT #####
所以我添加了这个索引:
KEY `column` (`column`(1)),
但是当我做的时候
EXPLAIN SELECT DISTINCT column FROM tablename
它仍然说它遍历所有行而不仅仅是不同的行
答案 0 :(得分:6)
使用DISTINCT
在要查询的列或列集上创建索引将加快查询速度。它不会查看每一行,而是使用索引中的两个条目。虽然只有100行,但差异甚至可能无法检测到。
答案 1 :(得分:0)
我正在做类似的事情。我试图从400Mill行的表中获取不同的值。
我甚至拥有该属性的关键字。它仍然在进行全面扫描。唯一的区别是它是全索引扫描而不是光盘扫描。
我只有10个不同的值,但即使在5分钟后也没有结果我杀了它。