SQL Server Veritabanı

Non-Clustered Index Oluşturma

Non-Clustered Index

Bir önceki yazımızda clustered index nedir ve oluşturma konusuna değinmiştik bu yazıda da non-clustered index kavramına bakacağız.

Non-Clustered Index (Kümelenmemiş bir dizin), tablodaki fiziksel verileri sıralamaz. Aslında, kümelenmemiş bir dizin bir yerde depolanır ve tablo verileri başka bir yerde depolanır. Bu, kitap içeriğinin bir yerde ve dizinin başka bir yerde bulunduğu bir ders kitabına benzer. Bu, tablo başına birden fazla kümelenmemiş dizine izin verir.

Burada tablonun içinde verilerin kümelenmiş bir dizine göre sıralanacağından bahsetmek önemlidir. Ancak, kümelenmemiş dizin verileri belirtilen sırada saklanır. Dizin, dizinin oluşturulduğu sütun değerlerini ve sütun değerinin ait olduğu kaydın adresini içerir.

Dizinin oluşturulduğu bir sütuna karşı sorgu verildiğinde, veritabanı önce dizine gider ve tablodaki karşılık gelen satırın adresini arar. Daha sonra bu satır adresine gidecek ve diğer sütun değerlerini getirecektir. Bu ek adım nedeniyle, kümelenmemiş dizinler kümelenmiş dizinlerden daha yavaştır.

Hadi bir bakalım. İlk olarak, aşağıdaki kodu çalıştırarak “okul” içinde bir “ogrenci” tablosu oluşturun veya gerçek verilerinizi kullanıyorsanız veritabanınızın tamamen yedeklendiğinden emin olun:

Burada “öğrenci” tablosunda “id” sütununda birincil anahtar kısıtlaması belirledik. Bu, otomatik olarak “id” sütununda clustered (kümelenmiş) bir dizin oluşturur. Belirli bir tablodaki tüm dizinleri görmek için “sp_helpindex” saklı yordamını yürütün. Bu saklı yordam, tablonun adını parametre olarak kabul eder ve tablonun tüm dizinlerini alır. Aşağıdaki sorgu, öğrenci tablosunda oluşturulan dizinleri alır.

Sorgu çalıştırıldığında clustered Index oluşturulduğunu göreceksiniz. Aşağıdaki adımı izleyerek non-clustered index oluşturma aşamasına geçelim.

Non-Clustered Index Oluşturma

Kümelenmemiş bir dizin oluşturma sözdizimi, kümelenmiş dizine benzer. Ancak, kümelenmemiş dizin durumunda, “CLUSTERED” yerine “NONCLUSTERED” anahtar kelimesi kullanılır. Aşağıdaki betiğe bir göz atın.

Yukarıdaki komut dosyası, öğrenci tablosunun “isim” sütununda kümelenmemiş bir dizin oluşturur. Dizin, artan düzende ada göre sıralar. Daha önce söylediğimiz gibi, tablo verileri ve dizin farklı yerlerde saklanacaktır. Tablo kayıtları, varsa kümelenmiş bir dizine göre sıralanır. Dizin tanımına göre sıralanır ve tablodan ayrı olarak saklanır.

Non-clustered indexde alanlar satırların adresleri ile birlikte tutulmaktadır. Aşağıdakine benzer şekilde ayrı bir yerde indexlenmiştir. İSİM alanına göre yapılan aramalarda bu index kontrol edilip ilgili adrese uygun tüm kayıtlar asıl tablodan çekilir.

 

1 Yorum

Yorum yapmak için tıklayın