SQL Server Veritabanı

Clustered Index Oluşturma

 

Clustered Index

Bu yazda clustered index nasıl oluşturulacağı ve kaldırlacağı konunusunu ele alacağız. SQL Serverda clustered indexlerin yanı sıra non-clustered index oluşturma yazısının da ilginizi çekeceğibi düşünüyorum.

Clustered Index(Kümelenmiş dizin), verilerin bir tabloda fiziksel olarak depolanma sırasını tanımlar. Tablo verileri yalnızca bir yolla sıralanabilir, bu nedenle tablo başına yalnızca bir kümelenmiş dizin olabilir. SQL Server’da, birincil anahtar kısıtlaması o sütunda otomatik olarak kümelenmiş bir dizin oluşturur.

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 sonucu aşağıdaki gibi olacaktır.

clustered index, non-clustered index

Çıktıda sadece bir endeks görebilirsiniz. Bu, “id” sütunundaki birincil anahtar kısıtlaması nedeniyle otomatik olarak oluşturulan dizindir.

Tablo dizinlerini görüntülemenin başka bir yolu da “Object Explorer-> Databases-> Database_Adı-> Tables-> Table_Adı -> Indexes” e gitmektir. Referans için aşağıdaki ekran görüntüsüne bakın.

clustered index

Bu kümelenmiş dizin, kaydı öğrenci tablosunda “id” artan düzeninde saklar. Bu nedenle, eklenen kayıt 5 kimliğine sahipse, kayıt ilk satır yerine tablonun 5. satırına eklenir. Benzer şekilde, dördüncü kaydın kimliği 3 ise, dördüncü satır yerine üçüncü satıra eklenir. Bunun nedeni, kümelenmiş dizinin, dizinlenmiş sütuna, yani kimliğe göre depolanan kayıtların fiziksel sırasını korumak zorunda olmasıdır. Bu sıralamayı çalışırken görmek için aşağıdaki komut dosyasını yürütün:

Yukarıdaki komut dosyası, öğrenci tablosuna on kayıt ekler. Burada kayıtların “id” sütunundaki değerlerin rastgele sırada eklendiğine dikkat edin. Ancak id sütunundaki varsayılan kümelenmiş dizin nedeniyle, kayıtlar fiziksel olarak “id” sütunundaki değerlerin artan düzeninde depolanır. Öğrenci tablosundan kayıtları almak için aşağıdaki SELECT deyimini yürütün.

Kayıtlar aşağıdaki sırayla alınacaktır:

sql örnekleri

Clustered Index Oluşturma

Kendi özel dizininizi ve varsayılan kümelenmiş dizini oluşturabilirsiniz. Bir tabloda yeni bir kümelenmiş dizin oluşturmak için önce önceki dizini silmeniz gerekir.

Bir dizini silmek için “Object Explorer-> Databases-> Database_Name-> Tables-> Table_Name -> Indexes” e gidin. Silmek istediğiniz dizine sağ tıklayın ve DELETE seçin. Aşağıdaki ekran görüntüsüne bakın.

Şimdi, yeni bir clustered index (kümelenmiş Dizin) oluşturmak için aşağıdaki komut dosyasını yürütün:

Kümelenmiş dizin oluşturma işlemi, bir istisna dışında normal bir dizine benzer. Kümelenmiş dizin ile, “INDEX” ten önce “CLUSTERED” anahtar sözcüğünü kullanmanız gerekir.

Yukarıdaki komut dosyası, öğrenci tablosunda “INDEX_OGRENCI_CINSIYET_ISIM” adlı kümelenmiş bir dizin oluşturur. Bu dizin “cinsiyet” ve “isim” sütunlarında oluşturulur. Birden fazla sütunda oluşturulan bir dizine “bileşik dizin” denir.

Yukarıdaki indeks önce tüm kayıtları cinsiyetin artan sırasına göre sıralar. Cinsiyet iki veya daha fazla kayıt için aynı ise, kayıtlar “isim” sütunlarındaki değerlerin azalan düzeninde sıralanır. Tek bir sütunda da kümelenmiş bir dizin oluşturabilirsiniz. Şimdi öğrenci tablosundan tüm kayıtları seçerseniz, kayıtlar aşağıdaki sırayla alınır:

Yorum Yap

Yorum yapmak için tıklayın