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.