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.)
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ı:
İ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.
İ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.
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
Yorum Gönder