Bu sorguda size yardımcı olacak bir dizin bulunamadı. AGE oldukça seçici görünebilir. Yüzden fazla farklı değer var (ağaç ve binaları arkadaş olarak kabul edebileceğimizi varsayalım). Dolayısıyla, AGE üzerinde yapılan bir araştırmanın tüm olası kayıtların% 1'ini aradığı görünebilir. Bununla birlikte, AGE eşit olarak dağıtılmıyor: AGE=20
'daki bir filtrenin, AGE=99
'dan daha fazla kayıt döndürme olasılığı vardır.
UPPER (NAME) için, like UPPER('%ESC%')
'da kısıtlama yapıyorsunuz. CESC, ESCOBAR ve FRANCESCA gibi eşleşir. Yani sorgu, her adı AGE=20
olarak değerlendirmek zorundadır. friends (AGE,UPPER(NAME))
üzerinde bir dizininiz varsa, tüm WHERE yan tümcesi, makul derecede verimli olabilecek bir Dizin Aralığı Taraması kullanılarak değerlendirilebilir. Yalnızca AGE
'daki dizin, bu noktada bir tablonun okunmasına neden olur.
Her iki yöntem de, sorguyu tüm kaydı almak için tabloyu okumalıdır, çünküUPPER(NAME)
ürününü döndürmek istemezsiniz. AGE=20
'da çok sayıda endeksli okumaya sahip ortak bir isim öğesi için çok sayıda isabet alırsanız, bunlar pahalı olur. Tüm tabloyu okuyan Tam Tablo Tarama, FRIENDS çok geniş bir tablodur (çok sayıda sütun) olmadıkça daha verimli olabilir.
Performans ayarlama işlemi, satış dışı bırakma sorunudur. Eğer ARKADAŞLARINIZDA çok fazla kayıt ve ve iyi bir yayılımınız varsa, AGE ve UPPER (NAME) üzerinde çok fazla sorgulamak istiyorsanız o zaman friends (AGE,UPPER(NAME))
üzerindeki bir dizin onu sürdürmenin ek yüküne değer olabilir. Ama eğer küçük bir masa ya da tüm arkadaşlarınız üniversite yaşlarındaysa, büyük ihtimalle herhangi bir endeksle uğraşmamanız gerekir.
Kısacası, burada bir çok değişken var: yapabileceğiniz tek şey çeşitli seçenekleri kıyaslamak ve sizin için en iyi olanı görmek.