Mysql查询使用索引使用filesort使用临时

时间:2014-08-27 13:58:19

标签: mysql performance optimization filesort

我的数据库中有以下两个表:

表1:图像

  • 专栏:jeid [和其他人]
  • 主键:jeid
  • 行数:160万

表2:media_names

  • columns:jeid,media type,first_name,last_name
  • 主键:jeid,media_type
  • 索引:first_name,last_name
  • 行数: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

当我对此查询进行解释时,额外的列告诉我:

  • 使用索引;
  • 使用临时;
  • 使用filesort

我不确定'使用索引'是不好的,但我很确定'使用临时'和'使用filesort'是不好的。问题是,我不知道如何解决这些问题。我一直在阅读各种各样的,但我似乎无法找到明确的解决方案。谁能给我一些帮助?

谢谢。

1 个答案:

答案 0 :(得分:0)

编写查询的方法不止一种,你必须做一些测试,无论如何,这是我的继续。

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

注意::这假设您在两个表中都有匹配的列(除非您特别想要左连接,否则这应该没问题)。