“SQL Optimizer…” IN yerine EXISTS kullanımı

Posted by Zafer | Posted in SQL | Posted on 22-09-2008

Önerilmez

  1. SELECT product_id, name FROM   products
  2. WHERE  product_id IN ( SELECT product_id FROM   purchases )

Önerilir

  1. SELECT product_id, name FROM   products pr
  2. WHERE EXISTS ( SELECT 1 FROM   purchases pu WHERE   pu.product_id = pr.product_id )

IN bir listede aranan verinin olup olmadığını kontrol eder. EXISTS sadece kayıtların varlığını kontrol
ederken, IN ise gerçek verileri kontrol eder. Alt sorgularda EXISTS daha iyi sonuçlar verdiğinden tercih
edilmelidir.

Kaynak : SQL Tuning El Kitabı call 7/24