Мы уже изучили, что подзапросы можно использовать в WHERE
, но достаточно часто их делать не стоит и вот почему.
Если мы захотим написать запрос:
select
column1,
column2
from
table1
where column1 in (select column3 from table2)
То это не совсем эффективно, потому что в условии идет обращение к каждому значению подзапроса.
Но если мы попытаемся решить задачу через INNER JOIN
, а именно вот так
select
column1,
column2
from
table1
join
table2 on table1.column1 = table2.column3
То по сути мы получим такой же результат, но работать такой запрос будет быстрее.
Это происходит, потому что работа JOIN
внутри устроена иначе и эффективнее, нежели простое сравнение 1-го значения с другим. Это мы еще успеем обсудить на уроке про оптимизацию.