我有非常简单的表结构,我在其中存储数据库的音乐,因为音乐使用不同的语言,所以我用列 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 秒而不是我之前的查询,而没有 order by 只需要 0.0009 秒
任何人都可以对解释的这种奇怪输出有所了解吗?