2013-02-23 45 views
0

我有我在哪里存储我的数据库的音乐,音乐是不同的语言,所以我排序与列song_language。表结构的歌曲是这样mysql的explain输出不正确

 id   title    song_language 
非常简单的表结构

我有100万首不同的语言大约歌曲,但是当我试图筛选出它扫描特定语言的所有歌曲。如果我说song_language =“工程”,它会扫描所有歌曲500000然而,我想只有3首歌曲和我的专栏song_language是很好的索引。这里是我的查询

 SELECT * FROM tableA WHERE song_language='Eng' limit 6 

需要0.0009秒来执行,所以我很高兴,但解释说,一些订单后

 id select_type  table type possible_keys key  key_len  ref  rows Extra 
     1 SIMPLE tableA ref  song_language song_language 167  const 462591 Using where 

输出相差

 id select_type  table type possible_keys key  key_len  ref  rows Extra 
     1 SIMPLE tableA ref  song_language primary  4 null 11 Using where 

,所以我认为这是不使用索引,当我执行这个查询需要对我的公关0.0035秒为了不被只用了0.0009秒

任何人都可以给一些光在这个陌生的解释输出evious查询?

+0

@FathahRehmanP是的,我知道为什么üHV疑问 – wayenjoy 2013-02-23 04:58:46

回答

1

你可能想,如果你使用的是限制在该查询添加ORDER BY。如果是在非索引列排序它可以解释意想不到的查询计划。

+0

请注意,为了以后通过索引是没有用的,因为它不会使用索引如果u通过 – wayenjoy 2013-02-23 04:59:47

+0

使用极限,为了增加无订单通过同样无用。另外,你是不正确的。索引绝对是按种类使用的。 – JohnFx 2013-02-23 05:00:40

+0

当我通过ID添加命令解释是告诉它只检查了11行,但键正在改变为主,所以我认为在这种情况下,它不使用索引看我更新的问题解释输出 – wayenjoy 2013-02-23 05:03:46