mysql解释输出不正确

时间:2013-02-23 04:39:24

标签: mysql

我有非常简单的表结构,我存储我的数据库的音乐,因为音乐是用不同的语言,所以我用歌曲song_language排序歌曲。表结构是这样的

      id            title               song_language

我有100万张不同语言的近似歌曲但是当我试图过滤掉它时会扫描该特定语言的所有歌曲。如果我说song_language ='Eng'它将扫描所有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秒

任何人都可以对这个奇怪的解释输出有所了解吗?

1 个答案:

答案 0 :(得分:1)

如果您使用限制,则可能需要在该查询上添加ORDER BY。如果它在非索引列上进行排序,则可以解释意外的查询计划。