MySQL: «внутреннее объединение», производительность: «где» против добавления в «вкл» - PullRequest
2 голосов
/ 22 февраля 2011

Есть ли разница в производительности между этими двумя?

select * from tableA INNER JOIN tableB ON tableA.type = ? AND tableB.ref = tableA.id
select * from tableA INNER JOIN tableB ON tableB.ref = tableA.id WHERE tableA.type = ?

1 Ответ

5 голосов
/ 22 февраля 2011

Я предполагаю, что они будут идентичны, но вы можете сами это выяснить, запустив EXPLAIN на обоих из них и посмотрев на фактический план.

Обычно с декларативным языком, таким как SQL, вы не собираетесьчтобы быть в состоянии найти оптимизацию серебряной пули, которая так проста.Если бы существенное преимущество в производительности было у одного над другим, оптимизатор, вероятно, распознал бы его и запустил план запроса, в котором использовался наиболее эффективный метод.

...