SQL Server Istatistik Adı ile Index Oluşturma Süreci

Reading Time: 4 minutes

SQL Server üzerinde Istatistik adı ile Index oluşturma operasyonunu bu makalemde ele alacağım. Bunu adım adım Demo ile yaparak tüm süreci sizlere uygulamalı anlatmak istiyorum.

Örnek Demo tablomuzu oluşturuyoruz.

Demo tablomuz üzerinde Index ve İstatistik bilgisini kontrol ediyoruz. (Aşağıda ki script ile bu kontrolleri tablo ismini vererek sağlayabiliyoruz.)

Gördüğünüz üzere tablomuz üzerinde Index bulunmamakta ve tablomuzun tipi HEAP table olarak görünmekte.

HEAP Table : Bir tablodaki verilerin disk üzerinde sirali olarak kaydedilmesi için clustered index barindirmasi gerekir, Eger bir tablo da clustered index yoksa tablodaki veriler diske rastgele kaydedilir. Clustered index bulunan bir tablo clustered table diye adlandirilir. Clustered index olmayan bir tablo ise heap diye adlandirilir.

İstatistik verilerini sorguladığımız da ise tablomuz üzerinde herhangi bir istatistik olmadığını görmekteyiz.  Tablomuz üzerinde NonCLustered Index oluşturup birde Index ve İstatistik bilgilerini gözlemleyelim,

Index oluşturduktan sonra tekrar Index ve Istatistik bilgilerini sorguluyoruz.

Index bilgilerini sorguladığımızda NonClustered Index atmadan önce tablomuz üzerinde Clustered Indez olmadığını HEAP table ibaresi ile öğrenmiştik. Fakat tablomuz üzerine eklediğimiz NonClustered Index i Index detaylarımızda görmekteyiz.

Şimdi ise birde İstatistik bilgilerini sorgulayalım ,

Gördüğünüz üzere tablomuz üzerine oluşturduğumuz NonClustered Index ile beraber aynı Index adında birde o index e ait İstatistik oluştuğunu görüyoruz.

Şimdi de bu Demo tablomuzu Drop edip tekrar Create ediyoruz ve NonClustered Index oluşturmadan direkt İstatistik Create edip incelememizi yapalım.

Demo tablomuzun üzerine manuel istatistiğimizi oluşturuyoruz.

Şimdi ise tablo üzerinde hem Index hem de istatistik bilgilerine bakalım.

Tablomuz HEAP table ve üzerinde Index yok. İstatistiğimiz oluşmuş ve istatistik bilgilerini görmekteyiz.

Şimdi ki örneğimizde ise ilk iki örneğimizide bir arada yaparak deneme yapacağız. Yani ilk etapta Demo tablomuzu DROP edip sonra tekrar oluşturacağız ve daha sonra tablomuz üzerine istatistiğimizi oluşturacağız. Daha sonra aynı isimde NonClustered Index oluşturmaya çalışacağız.

İstatistiğimizi aşağıda ki script ile başarılı bir şekilde oluşturuyoruz..

Daha sonra aşağıda ki Index imizi oluşturmak istediğimiz de,

aşağıda ki hatayı almaktayız.

Msg 1913, Level 16, State 1, Line 1
The operation failed because an index or statistics with name ‘sqltr_NCIX_sqltr_DemoTable_Id’ already exists on table ‘sqltr_DemoTable’.

Hatadan da anlaşılacağı üzere Index oluşturuken ilk örneğimizde Index ile beraber o index e ait istatistik de oluşmuştu. Manuel bir Index oluşturduk ve aynı isimde bir Index Create etmeye çalıştığımızda Index isminde önceden bir istatistik oluştuğundan dolayı hata aldık. Eğer biz index imizin ismini oluşturduğumuzda çalıştırmadan tablo üzerinde ki istatistikleri kontrol edip ona göre Index ismimizi ayarlamalıyız. Şimdi aynı Index i farklı bir isimde oluşturmak isteyelim ,

Şimdi kontrol edelim Index ve istatisitk bilgisini ,

Gördüğünüz gibi tablomuzda manuel oluşturduğumuz istatistik bilgiside ve ismini değiştirip oluşturduğumuz Index bilgiside ve o index e ait istatistik bilgiside bulunmaktadır.

 

Kolay Gelsin.

Leave a Reply

Your email address will not be published. Required fields are marked *