2008-06-12

SPARSE Column and Filtered Index

Merhaba Değerli Okuyucular,

Bugün de CTP5/CTP6 ve RC0 sürümlerini inceleyip, kurcalayıp, test edip bir yanlışlıklarını gördükce sevgili Microsoft amcamıza bugları arzı endam eylemeye çalıştığımız SQL Server 2008'i tanıma ve yeniliklerini keşfetme serüvenümüze kaldığımız yerden devam edeceğiz.

Elalem yapmış bana ne demiyoruz. Elalemin yaptığını bari keşfedip kullanalım diyoruz. İşimiz SQL Server olunca gücümüz de SQL Server oluyor haliyle. SQL ile yatıp SQL ile kalkıp SQL ile çay araları veriyoruz. Aranızdan kıs kıs gülüp alt üstü işiniz gücünüz 3 harfli bir kelime. Gelin görün ki bu 3 harf ile hangi kombinasyonlar ortaya çıkıyor(Dostlar arasında kalsın; düşmanlara çaktırmayın:) 3 harfli bir kombinasyonun en fazla 6 farklı çeşidi olur )?

Lafı fazla uzatmadan ve sizleri SQL'den soğutmadan edebi metinleri bırakıp işin teknik kısmına gelelim.

SQL Server 2008 ile birlikte sparse column ve filtered index geliyor. Bana ne demeyin bakarsınız işinizi kolaylaştırıp hızlandırır. Benden söylemesi ve uyarması gerisi size kalmış.

Sparse column ı özellikle entity yapısındaki kayıtlarımız için kullanabiliriz. Onlarca alanınız var ama bu alanlarınızın büyük çoğunluğu boş(null), çok az kısmı dolu ise sparse column özelliği tam size göre. Sparse column null değerli alanlar için 0 diğer alanlar için 2-4 byte arasında yer kaplıyor. Sparse column ile yerden %20-%40 oranında tasarruf sağlanabilir aynı şekilde %20 ye varan CPU performansında iyileşme görülebilir. Daha detaylı bilgi için bkz. Using Sparse Columns

SQL Server 2008 ile birlikte ilk defa tanışacağımız hatta severek kullanacağımız Filtered Index; klasik indexlerimize WHERE koşulunun eklenmiş hali. Filtered Index belirli koşullar altındaki kayıtları indexliyor.

Örneğin Vatandaslik tablomuzda 1953 yılından önce doğan vatandaşlarımızı bir indexte tutmak isteyelim:

CREATE NONCLUSTERED INDEX [indVatandas1953] ON [dbo].[Vatandaslik]
(
[DogumTarihi] ASC
)
WHERE ([DogumTarihi]<'1953-01-01')
ON [PRIMARY]

Peki iyi güzel de bu bize ne sağlayacak? Tabiki bu sayede index'imiz daha az yer kaplayıp daha hızlı olacak. Filtered index ile ilgili detaylı bilgi için bkz.Filtered Index Design Guidelines

Not:Filtered Index ile ilgili SQL kodu SQL Server 2008 RC0 ile test edilmiştir.

Hiç yorum yok:

.::YASAL UYARI::.

©2004-2016 Mehmet GÜZEL, http://www.mehmetguzel.net/ & http://www.mehmetguzel.com/

Site içeriği kaynak gösterilmek koşuluyla yayınlanabilir. Yazılan yazı ve yorumlar sadece yazı ve yorum sahiplerini bağlar.