@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), скорее всего разницы не будет.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы