В последнее время результат операции запроса действительно привлекает мое внимание. Вот оно: Мой первый запрос:Почему mysql «где не существует» намного эффективнее, чем «не в»? Каков механизм «где не существует»?
select * from tableA as a
where a.keyword NOT IN
(
select keyword from tableB
union
select keyword from tableC
union
select keyword from tableD
)
мой второй запрос:
select * from tableA as a
where NOT EXISTS
(select NULL from
(
select keyword from tableB
union
select keyword from tableC
union
select keyword from tableD
) as t
where a.keyword=t.keyword
)
Очевидно, что эти два запрос эквивалентен. Однако первый из них займет около 10 секунд, а второй - только около 1 секунды. Я действительно хотел бы знать, какой механизм ведет к такой значительной разнице в производительности.