Ve böylece performans ayarlama ve indeksleme stratejileri sanatına giriyor ...
Mevcut sütun tanımını önerilen sütunları içerecek şekilde değiştirmek bana mantıklı geliyor
Teklifinizi alıp üçüncü bir indeks tanımı yazacağım:
create index [idx_index3]
on [table1] (col1, col2, col3)
include (col4, col5, col6....);
CREATE INDEX
Alıntıladığınız ifadeye karşılık gelen ifade bu olmalıdır .
Bu çok iyi bir ihtiyatlı çözüm olabilir, ancak duruma göre değişir . İşte buna bağlı olduğunu söylediğimde birkaç örnek.
Çoğunlukla böyle sorgulardan oluşan ortak bir iş yükünüz varsa:
select col1, col2, col3
from table1
where col1 = 1
and col2 = 2
and col3 = 3;
O zaman idx_index1
endeksiniz sağlam olur. Mükemmel bir şekilde dar ise, bu sorguyu içinde fazla veri bulunmayan bir dizindir (eğer varsa, kümelenmiş dizin tanımını dikkate almaz).
Ancak, esas olarak aşağıdaki gibi sorgulardan oluşan iş yükünüz varsa:
select co11, col2, col3, col4, col5
from table1
where col1 = 1
and col2 = 2;
Öyleyse , kümelenmiş dizine (veya yığına bir RID aramasına) anahtar aramaya olan ihtiyacı engelleyen idx_index2
bir kaplama dizini olarak adlandırılan akıllıca olacaktır . Kümelenmemiş dizin tanımı yalnızca sorgulama gerektiren tüm verileri kapsar.
Tavsiyenizle, aşağıdaki gibi bir sorgu için çok uygun olacaktır:
select co11, col2, col3, col4, col5
from table1
where col1 = 1
and col2 = 2
and col3 = 3;
Tavsiyeniz idx_index3
, yukarıdaki sorgu için arama ölçütlerini karşılayan bir kaplama dizini olacaktır.
Ulaşmaya çalıştığım nokta, bunun gibi izole bir soruda, buna kesin olarak cevap veremeyiz. Her şey ortak ve sık iş yükünün ne olduğuna bağlıdır. Tabii ki her bir örnek sorgu türünü işlemek için her zaman bu dizinlerin üçünü de tanımlayabilirsiniz, ancak daha sonra bu dizinleri güncel tutmak için gerekli olan bakım söz konusudur (düşünün: INSERTs, UPDATEs, DELETEs). Dizinlerin yükü budur.
İş yükünü incelemeniz ve değerlendirmeniz ve avantajların nerede en iyi olacağını belirlemeniz gerekir. İlk örnek sorgusu, saniyede düzinelerce kez yapılan en yaygın soruysa ve üçüncü örnek sorgusu gibi çok seyrek bir sorgu varsa, dizinin yaprak düzeyi sayfalarını INCLUDE
anahtar olmayan sütunlar. Her şey iş yükünüze bağlıdır.
İhtiyatlı endeksleme stratejilerini ve ortak iş yükünüzü anlarsanız, her ikisini de uygulayarak en iyi yolun ne olduğunu öğrenebilirsiniz.