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
エンジンを使用しており、プライマリ インデックスしかありません。