Mysql Query perfomance.Какой из них лучше? - PullRequest
2 голосов
/ 07 октября 2011

Привет. Я хочу знать, какие запросы подходят для нескольких таблиц.

Например, например:

select table1.id, table1.name from table1,table2,table3 
where table1.id=table2.id and table2.id=table3.id

или

select table1.id, table1.name  
from table1 
inner join table2 on table1.id=table2.id 
inner join table3 on table2.id=table3.id 
where 1

или

select table1.id, table1.name 
from table1 
join table2 on table1.id=table2.id 
join table3 on table2.id=table3.id 
where 1

Какой тип запроса лучше всего подходит для производительности?

Ответы [ 4 ]

5 голосов
/ 07 октября 2011

Они должны быть точно такими же. Возможно, вы захотите прочитать соответствующий раздел из руководства MySQL (которое касается только синтаксиса, но не производительности).

4 голосов
/ 07 октября 2011

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

Многие разработчики предпочитают явный синтаксис ANSI-92 (используемый в последних 2 запросах), а не неявный синтаксис в первом запросе, однако это не должно влиять на производительность.

1 голос
/ 07 октября 2011

Как уже указывалось, все формы одинаковы в отношении эффективности. Они отличаются, однако, и в очень важном аспекте: удобочитаемость.

Вот почему я предпочитаю использовать синтаксис inner join. Это также обозначение, распространенное в стандартах.

Вам могут пригодиться ответы на этот вопрос: Синтаксис внутреннего соединения SQL

0 голосов
/ 07 октября 2011

join - это просто сокращение для inner join, а выполнение from table1,table2 where аналогично внутреннему объединению ( см. Документацию по mysql и форум mysql ). mysql должен обрабатывать их все одинаково (время разбора для второго может быть немного меньше, но это ничтожно мало).

по крайней мере, вы должны выбрать тот, который будет более приемлемым (и таким образом обслуживаемым), который будет вторым (на мой взгляд, некоторым ребятам может понравиться первый).

...