Performans'la İlgili Küçük İpuçları
Oracle'da ya da diğer birçok veritabanında aşağıdaki keyword'lere yönelik olarak performans
konusunda bilgiler biraz karışıktır.
IN clause'unu kullanmak, OR ... OR ... 'u kullanmaktan daha performanslı mıdır?
Yanıtmız HAYIR.
SELECT * FROM tabloadi WHERE il=6 OR il=34 OR il=35; ile SELECT * FROM tabloadi WHERE il IN (6,34,35); arasında
hiçbir fark olmadığı gibi aslında IN ... şeklindeki bir kullanım da OR ... OR ... şekline otomatik olarak
dönüştürülmektedir. Tabii ki IN ile kullanım hem okunma açısından hem de yazım açısından daha
kolaydır.
Benzer bir performans konusu ise BETWEEN ... AND ... kullanımı için de geçerlidir.
WHERE maas BETWEEN 1000 AND 1500 şeklindeki bir ifade WHERE maas>=1000 AND maas<=1500 den farklı bir yazım
değildir ve performans açısından hiçbir avantajı yoktur.
Peki ya 2 tablo JOIN yapılıyor ve şu SQL çalıştırılıyorsa:
SELECT adi, soyadi, notu
FROM ogrenci, notlar
WHERE ogrenci.ogrno=notlar.ogrno;
Yukarıdaki sql yerine
SELECT o.adi, o.soyadi, n.notu
FROM ogrenci o, notlar n
WHERE o.ogrno=n.ogrno;
şeklinde bir SQL yazmak her zaman daha avantajlıdır. Tabii ki daha da performanslıdır. İlk
örneğimizde adi, soyadi ve notu alanlarının hangi tabloda olacağını bulmak için Veri Tabanı Yönetim Sistemi
2 tabloyu da araştırmak zorunda kalacaktır. Ama 2. örnekte hangi tabloda hangi alanın olduğunu siz belirttiğiniz
için daha hızlı çalışacaktır.