Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用索引的Mysql查询使用临时文件排序_Mysql_Performance_Optimization_Filesort - Fatal编程技术网

使用索引的Mysql查询使用临时文件排序

使用索引的Mysql查询使用临时文件排序,mysql,performance,optimization,filesort,Mysql,Performance,Optimization,Filesort,我的数据库中有以下两个表: 表1:图像 专栏:jeid[和其他] 主键:jeid 行数:160万 表2:媒体名称 列:jeid、媒体类型、名、姓 主键:jeid,媒体类型 索引:名、姓 行数: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

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

表1:图像

  • 专栏:jeid[和其他]
  • 主键:jeid
  • 行数:160万
表2:媒体名称

  • 列:jeid、媒体类型、名、姓
  • 主键:jeid,媒体类型
  • 索引:名、姓
  • 行数: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
当我对此查询进行解释时,额外的一列告诉我:

  • 使用指数
  • 使用临时设备
  • 使用文件排序
我不确定“使用索引”是坏的,但我非常确定“使用临时”和“使用文件排序”是坏的。问题是,我不知道如何解决这些问题。我一直在读各种各样的东西,但我似乎找不到一个明确的解决办法。有人能给我一些帮助吗


谢谢。

编写查询的方法不止一种,您必须进行一些测试,不管怎样,下面是我的建议

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
注意:这假设两个表中都有匹配的列(除非您特别想要左联接,否则这应该是可以的)