【问题标题】:Mysql query using index using filesort using temporaryMysql查询使用索引使用文件排序使用临时
【发布时间】: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

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

  • 使用索引;
  • 使用临时;
  • 使用文件排序

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

谢谢。

【问题讨论】:

    标签: mysql performance optimization filesort


    【解决方案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
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-17
      • 1970-01-01
      • 1970-01-01
      • 2016-09-04
      • 2012-05-23
      • 2014-06-07
      • 2012-11-11
      • 2010-11-08
      相关资源
      最近更新 更多