【问题标题】:mysql wrong explain join large tablemysql错误解释join大表
【发布时间】:2013-09-05 11:20:52
【问题描述】:

我有一个 4Gb 的表,当我尝试在另一个表上使用左连接从中选择行时,它会在磁盘上创建非常大的临时表。 我的sql是:

 select * 
   from ads 
   left join theme 
     ON ads.theme_id = theme.id 
  ORDER BY ads.id DESC 
  limit 1

ads 有 4Gb 的数据,但表 theme 非常小。当我尝试解释这个查询时,mysql 并没有向我显示将创建临时表,但确实如此。而当我使用 sql 时

SELECT * 
  from ads, 
       theme 
 where ads.theme_id = theme.id 
 ORDER BY ads.id DESC 
 LIMIT 1

mysql 运行速度非常快,但是这个查询与 mysql 的解释相同。

我使用innodb 引擎并且我只有主索引。

【问题讨论】:

    标签: mysql join explain


    【解决方案1】:

    ads.theme_id 上添加索引。否则,它必须扫描整个ads 表以检查此列是否与theme.id

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-19
      • 2015-08-15
      • 2017-06-02
      • 2012-09-10
      • 2011-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多