【发布时间】: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 引擎并且我只有主索引。
【问题讨论】: