Mysql查询使用索引使用文件排序使用临时
Posted
技术标签:
【中文标题】Mysql查询使用索引使用文件排序使用临时【英文标题】:Mysql query using index using filesort using temporary 【发布时间】:2014-08-27 13:58:18 【问题描述】:我的数据库中有以下两个表:
表 1:图片
列:jeid [和其他] 主键:jeid 行数:160 万表 2:媒体名称
列:jeid、媒体类型、名字、姓氏 主键:jeid、media_type 索引:名字,姓氏 行数:160 万我正在运行以下查询:
SELECT media.jeid FROM image AS media
LEFT JOIN file_girls_names AS name ON name.jeid = media.jeid AND name.media_type = "image"
ORDER BY name.first_name, name.last_name
LIMIT 0, 50
当我对此查询进行解释时,额外的列告诉我:
使用索引; 使用临时; 使用文件排序我不确定“使用索引”是否不好,但我很确定“使用临时”和“使用文件排序”是不好的。问题是,我不知道如何解决这些问题。我一直在阅读各种各样的东西,但我似乎无法找到明确的解决方案。谁能给我一些帮助?
谢谢。
【问题讨论】:
【参考方案1】:编写查询的方法不止一种,您必须进行一些测试,无论如何这是我的尝试。
SELECT `names`.`jeid`
FROM `file_girls_names` AS `names`
INNER JOIN `image` AS `media` ON `names`.`jeid` = `media`.`jeid`
WHERE `names`.`media_type` = 'image'
ORDER BY `names`.`first_name`, `names`.`last_name`
LIMIT 0, 50
注意:: 这假设您在两个表中都有匹配的列(除非您特别想要左连接,那么这应该没问题)。
【讨论】:
以上是关于Mysql查询使用索引使用文件排序使用临时的主要内容,如果未能解决你的问题,请参考以下文章
通过 Join-Where-Group 通过选择查询避免使用临时的正确索引;使用文件排序
MySQL 查询优化 - 子查询 & 使用 where;使用临时的;使用文件排序