我有一个 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
引擎,我只有主索引。