9 Mayıs 2018 Çarşamba

SQL Server Tips 7-SQL Server TABLE SCAN, INDEX SCAN VE INDEX SEEK Arasındaki Farklar


SQL Server'da datalar table üzerine kaydedilirken  tanımlama yapılmadığı sürece sıralı olarak diskte tutulmazlar. Bu tip tablelara Heap Table adı verilir. Heap Table üzerine yeni bir kayıt eklendiğinde rastgele data pageler üzerine yazılır. Heap table üzerinde herhangi bir kayıt arandığı zaman tüm dataya erişilip aranan kayıtla karşılaştırılır. Kayıt bulunsa bile başka kayıtlar bulunma ihtimali olduğu için table üzerindeki tüm kayıtlarla karşılaştırma işlemi yapılmak zorundadır.

Bu işleme TABLE SCAN işlemi denir. Çok yoğun dataların olduğu tablelarda bu arama işlemi çok maliyetli olacağı için kullanılmaz.

INDEX SCAN işleminde ise  tablo üzerinde index olmasına rağmen SQL Server kayıtlara TABLE SCANda olduğu gibi satır satır erişir.  SQL Serverın bu şekilde işlem yapmasının sebebi sorgu sonucunda çok fazla kayıt döndürüleceğine karar vermesinden dolayı  satır satır erişmenin daha karlı olacağına karar vermesinden dolayıdır.  Bu sebeble INDEX SCAN işlemi ile TABLE SCAN işlemi hemen hemen aynıdır.

INDEX SEEK işlemi ise veriye erişirken Clustered veya Non-clustered olan bir indexin kullanıldığını bu sayede sadece istenilen verilere eriştiğimizi göstermektedir. Bu nedenle Index Scan yerine Index Seek tercih edilir. Index Seek performans açısından en üst noktadır.

Sql Server DateTime Veri Tipindeki Datayı Türkçe Formatında Göstermek

  SQL'de tarihleri farklı formatlarda göstermek için FORMAT fonksiyonunu kullanabilirsiniz. Türkçe kısa tarih formatı genellikle "...