Table Sample Komutu

Table sample rasgele sayıda kayıt elde etmemizi sağlayan komuttur. Direkt olarak Sql Server'ın verilerinin tutulduğu page'lerden okuma yapar ve ne kadar sayfa okunacağı parametrede belirtilir. percent ve rows olmak üzere 2 adet parametremiz vardır. (veritabanı olarak AdventureWorks'ü kullanıyorum.)

1) select * from Sales.SalesOrderDetail;
2) select * from Sales.SalesOrderDetail TABLESAMPLE(10 percent);
3) select * from Sales.SalesOrderDetail TABLESAMPLE(1000 rows);


Percent, sonuç setindeki kayıtların yüzde kaçının okunacağını belirtir. Örneğin tablomuzda 120 bin civarı kayıt vardır ve yukarıdaki 2. sorgu her çalıştırıldığında 12 bin, 13 bin civarı farklı sayıda kayıt döner.

3. sorgudaki 1000 rows ifadesiyle  her çalıştırıldığında 1000 kayıt döneceği kesin değildir. (rows değeri ne kadar az olursa o kadar az kayıt döner.)

3. sorgu 4 defa çalıştırıldığında dönen kayıt sayıları:

Çalışma Dönen kayıt
1 809
2 812
3 1183
4 980

İstersek top fonksiyonuyla rasgele sayıda dönen kayıtların sayısını sınırlandırabiliriz. Böylece her defasında en fazla 100 kayıt ekrana gelir.

select top 100 * from Sales.SalesOrderDetail TABLESAMPLE(1000 rows);

İstersek Repetable fonksiyonu ile rasgele sayıda oluşturulan kayıt sayısını sabitleyip, bundan sonraki her çalıştırmada aynı sayıda kayıt döndürebiliriz. Yani ilk çalıştırmada 100 kayıt dönmüşse bundan sonraki her çalıştırmada 100 kayıt görüntülenir.

select * from Sales.SalesOrderDetail TABLESAMPLE(10 percent) repeatable(205);

Ayrıntılı bilgi için: http://msdn.microsoft.com/en-us/library/ms189108(v=SQL.105)

Yorumlar

Bu blogdaki popüler yayınlar

Natural Key ve Surrogate Key Nedir?

PL/SQL'de DEĞİŞKEN TANIMLAMA, EKRANA YAZI YAZDIRMA ve GÜNCELLEME

SQL Server Analysis Services 2012’de Multidimensional Model ve Tabular Model