Fast N Hint Kullanımı

Reading Time: 2 minutes

Bu operatör ile sorgu sonucumuzda dönen kayıt sayısı içerisinde kaç tanesi için en hızlı bir şekilde dönüp diğerlerinin normal şekilde gelmesini sağlayabilriiz. Örneğin bir query yazdınız ve query sonucunuzda 1300 satır gelmekte fakat siz bu 1300 satırın ilk 100 satırını en hızlı şekilde gelmesini diğer satırlarında normal şekilde gelmesini istiyorsunuz. Bu doğrultuda Fast N operatörünü kullanarak istediğimiz yapıyı oluşlturabiliriz.  Bu işlem diğer sürece göre daha performanslı sağlanabillir.

Şimdi örneğimize geçecek olur isek ;

Query I :

Query I – Execution plan :

Query II :

Yukarıda ki örneklerimizi ayrı ayrı ele alacak olursak ; Query I ‘e baktığımız da düz bir Query yazdık iki tabloyu JOIN leyip verilerimizi çekmeye çalıştık ve sonucunda çıkan Execution Planı incelediğimizde SalesOrderDetail tablosunda ve Product tablosunda ındex Scan işlemini gerçekleştirmiş.

Aynı Query nin Fast 100 parametresi ile EXEC ettiğimizde ki burada ki amacımız ilk 100 satırı en hızlı şekilde getir diğer satırları normal getir demektir bu ve bu işlemin Execution Planını incelediğimiz de Execution plan Optimize edilmiş haldedir.

Planı detaylı incelediğimizde SalesOrderDetail tablosunda Clustered Index Scan sürecinde datalar okunup  Computed Scalar operatorü ile Computed Column  değeri hesaplanarak elde edilen sonuç kümesi diğer Plandan farklı olarak Product tablosu üzerinde Clustered ındex Seek işlemi ile elde edilen sonuçları Nested Loop Join operatörü ile birleştirmiştir.

Farklara bakacak olur isek ,

İlk Query de ki Planda Product tablosu üzerinde Scan işlemi ikinci Query de ise aynı tablo üzerinde Seek işlemi yapılmıştır. Bunun da nedeni Fast 100 operatörü koyarak ilk 100 kayıdın en hızlı getirilmesi için SQL Server Engine i Clustered ındex Seek işlemini tercih etmiştir.

Diğer farkımız ise ilk planda Hash Match Join kullanılır iken ikinci planda Nested Loop Join kullanılmıştır. Bunun sebebi d eyine Fast 100 operatörü kullanıldığındığından ilk 100 kayıdın en hızlı getirilmesi için planın opetimize edilmiş halidir.

Bu operatörün yararları kadar zararları da bulunmaktadır. Büyük veri kümelerinde FAST N değeri yüksek olduğundan bazen yapılan Seek süreci Scan sürecinden daha performansız olabilir. Bunu yanında Order gibi sıralamanın önemli olduğu noktalarda Order By ile büyük veri kümelerinden performansı aşağı çekebilir.

Bu süreçlerin adım adım analiz edilerek sisteme entegre edilmesi ve çalışılacak veri kümesinin de iyi gözlemlenmesi gerekmektedir.

Bunların dışında büyük veir kümelerinin ve sıralamanın önemli olmadığı süreçlerde Fast N operatörü çok faydalı bir operatördür.

Kolay Gelsin.

Leave a Reply

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