En iyileştirme işlemi için, daha büyük bir sonucu olan veya daha küçük bir sonucu olan ilişkiyle birleşir mi?Natural, daha iyi performans veren 3 ilişkiyi birleştiriyor mu?
0
A
cevap
2
Bu yorum yapmak için çok uzun. İlk önce
. NATURAL JOIN
'u kullanmayın. Olmayı bekleyen bir böcek. NATURAL JOIN
, JOIN
anahtarları için aynı ada sahip olan alanları kullanır. Bildirilen yabancı anahtar ilişkilerini bile dikkate almıyor.
Bugün bir sorgu yazabilir ve alttaki bir tablodaki küçük değişiklikler sorguyu tamamen kırabilir (itiraf ediyorum, bu başka yollarla da olabilir). Bununla birlikte, üzücü olan şey, mantık sorgusunda görünmüyor. Bunun yerine USING
veya ON
kullanın. İkinci olarak, çoğu veritabanının bir optimizasyon aşaması vardır. Bu aşama, işleme için en iyi sırayı belirler. Bu nedenle, siparişi değiştirmenin bile bir etkisi olmaz - çünkü veritabanı motoru siparişe karar verir (bir ipucu ile geçersiz kılmadıkça).
Açıklama için teşekkürler! Şimdi nasıl çalıştığını görüyorum. Peki, çoğu veritabanı optimizasyonunun sırasını nasıl belirler? – RhumB
bunu nasıl belirler? Tablo istatistiklerine, dizinlere, önbelleklere, belleğe, her tür şeye bakar ve verileri döndürmenin en hızlı yolunu bulmaya çalışır. Bir indeks, örneğin, X tablosunda filtrelenmenin, sonraki bir birleşme için kayıtlarda büyük bir azalmaya neden olacağını gösterirse, önce bunu yapmaya karar verebilir. Temel olarak bilmeniz gereken tek şey, bir veritabanının doğru sonucu olabildiğince çabuk vermesidir. Aynı işlevsel sorguyu bir düzine farklı şekilde yazabilir ve çoğu zaman sahnelerin arkasına ne koyacağınıza bakmadan aynı bir sorgu planı elde edersiniz. –