@Venesuella
BlackJack и ...

Отличаются ли быстротой выполнения данные запросы?

Ребятки, подскажите есть ли разница в эффективности в этих двух запросах, и если есть то в чем? какой запрос по идее должен быстрее работать?

первый запрос
select *
from Table1 t1 inner join (select tt.someId from TestTable tt where tt.id > 100) t2 on t1.someId = t2.someId
where t1.id > 1000


второй запрос
select *
from Table t1 inner join TestTable t2 on t1.someId = t2.someId
where t1.id > 1000 and t2.id > 100
  • Вопрос задан
  • 164 просмотра
Пригласить эксперта
Ответы на вопрос 2
У нормального планировщика поведение конкретно для этих двух запросов должно быть одинаковым. В любом случае, перед вложенным циклом джоина нужно будет отфильтровать строки обеих таблиц по индексам. Т.к. условия фильтрации для обеих таблиц независимы, я даже не могу придумать, как выполнить запросы по-разному.
А вообще второй вариант гораздо понятнее и программисту, и СУБД (легче построить план выполнения).
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Сравните планы запросов (EXPLAIN), скорее всего разницы не будет.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы