TABLESAMPLE kullanarak sonuçları sınırlama ayarlar

Örnek tablo yan tümce, döndürülen satırların sayısını sınırlayan bir tablo örnek numarasını veya satır PERCENT FROM yan tümcende.Örneğin:

TABLESAMPLE (10 PERCENT) /*Return a sample 10 percent of the rows of the result set. */
TABLESAMPLE (15 ROWS) /* Return a sample of 15 rows from the result set. */.

TABLESAMPLE, türetilen tablolar, bağlantılı sunucular tablolarından ve tablo değerli işlevler, satır kümesi işlevleri veya OPENXML türetilen tablolar için uygulanamaz.Bir görünüm veya tablo değerli bir satır içi işlev tanımında TABLESAMPLE tarif edilemez.

tablo alanı yan tümce sözdizimi aşağıdaki gibidir:

TABLESAMPLE [SYSTEM] (sample_number [ PERCENT | ROWS ] )

[ REPEATABLE (repeat_seed) ]

Not

TABLESAMPLE'de kullanılmaya başlanan SQL Server 2005. Önceki bir sürümünden, uyumluluğunu yükseltilir veritabanlarının karşı TABLESAMPLE kullanıldığında düzey veritabanında en az 90 olarak küme olması gerekir.Veritabanı uyumluluk düzeyini ayarlamak için bkz: ALTER DATABASE Transact-SQL).

Hızlı bir örnek büyük bir dönmek için örnek tablo kullanabilirsiniz tablo, aşağıdaki koşullardan biri doğrudur:

  • Tek tek satır düzeyinde gerçekten rasgele örnek olarak örnek yok.

  • Tek tek sayfaları satırda tablo ile diğer satır aynı sayfa üzerinde correlated değil.

Important noteImportant Note:

Sorgunuzu TABLESAMPLE yerine rasgele, satırları süzmek için tek tek satırların rasgele örnek gerçekten istiyorsanız değiştirin.Örneğin, aşağıdaki, kullanan sorgu NEWID satırları yaklaşık yüzde biri dönmek için işlev Sales.SalesOrderDetail TABLO:

SELECT * FROM Sales.SalesOrderDetail

WHERE 0.01 >= CAST(CHECKSUM(NEWID(), SalesOrderID) & 0x7fffffff AS float)

/ CAST (0x7fffffff AS int)

The SalesOrderID sütun is included in the CHECKSUM ifade so that NEWID() evaluates once per row to achieve örnekleme on a per-row basis. Ifade CAST(CHECKSUM(NEWID(), SalesOrderID) & 0x7fffffff AS float / CAST (0x7fffffff AS int) rasgele bir formüldür. float değer 0 ile 1 arasında.

SYSTEM seçeneğini kullanma

SISTEM, bir ANSI SQL uygulamasını bağımlı örnekleme yöntem belirtir.SISTEM isteğe bağlıdır, ancak bu seçenek yalnızca, belirtme kullanılabilir yöntem örnekleme. SQL Server Varsayılan olarak uygulanır.

TABLESAMPLE SYSTEM satır yaklaşık bir yüzdesi olarak verir ve tabloda her fiziksel 8 KB sayfa için rasgele bir değer oluşturur.Rasgele bir sayfa ve sorguda belirtilen yüzde değeri bağlı olarak, bir sayfa örnekte dahil veya hariç.Bulunan her sayfanın tüm satırları örnek sonucu verir küme.Örneğin, belirttiğiniz TABLESAMPLE SYSTEM 10 PERCENT, SQL Server yaklaşık yüzde 10 üzerinde belirtilen veri sayfaları, tüm satırları verir tablo. Satırları eşit sayfaların dağıtılmışsa tablo, yeterli sayıda sayfa varsa ve tablo, istenen örnek boyutu yaklaşık satır döndürdü.Her sayfa için üretilen rastgele bir değeri başka bir sayfa için oluşturulan değer bağımsız olduğundan, ancak sayfaların istenenden daha büyük veya küçük, yüzde iade edilmesi.TOP(n) işleç, belirtilen en fazla satır sayısını sınırlandırmak için kullanılabilir.

Ne zaman bir satır sayısını, toplam satır sayısını temel alan bir yüzde yerine belirtilen tablo, sayı satırları yüzdesi dönüştürülür ve bu nedenle, sayfaları, bu güvenlik açığından döndürülmelidir.TABLESAMPLE işlemi sonra yüzde olarak hesaplanan yapılır.

Tek bir tablodan oluşuyorsa sayfa, ya da tüm satırlarda sayfa döndürülür veya satırları hiçbiri döndürdü.Bu durumda, TABLESAMPLE SYSTEM yalnızca yüzde 100 veya yüzde 0 satırları sayfadaki satır sayısı ne olursa olsun, her sayfada döndürebilirsiniz.

Belirli bir tablo için TABLESAMPLE SYSTEM kullanarak (öbek veya kümelenmiş dizin tarama bulunmaktadır) bir tablo taraması, tabloda kullanmak için yürütme planı sınırlar.Plan, tarama işlemi, bir tablo gösterir, ancak sonuçta içerdiği sayfaların küme veri dosyasından okumaya gerçekten gerekli değildir.

Important noteImportant Note:

TABLESAMPLE SYSTEM yan tümce, bazı olası etkileri, örnekleme kullanmanın bazı anlayış ve bazı dikkatli kullanılmalıdır.Örneğin, bir birleştirmek iki tablonun her iki tabloda eşleşen her satır için bir geri olasıdır; TABLESAMPLE SYSTEM iki tablo biri belirtilirse, ancak unsampled tablosundan döndürülen bazı satırlar örneklenen tabloda eşleşen bir satır olası.Bu davranış, verileri, gerçekte geçerli olduğunda temel alınan tabloda bir Veri tutarlılık sorun olduğunu düşünüyorsanız, yol açabilir.Benzer şekilde, algılanan sorunu TABLESAMPLE SYSTEM birleştirilmiş iki tablo için belirtilmişse, hatta kötü olabilir.

YINELENEBILIR seçeneğini kullanma

YINELENEBILIR seçeneği yeniden döndürülmesi seçili bir örnek sağlar.Zaman REPEA tablo ile aynı belirtilmedi repeat_seed Değer SQL Server herhangi bir değişiklik yapıldı sürece aynı alt küme küme satır kümesi döndürür tablo. REPEATABLE ne zaman farklı bir belirtilmedi repeat_seed Değer SQL Server genellikle satırları farklı bir örnek tabloda döndürecektir. Aşağıdaki eylemleri tablo değişiklikleri kabul edilir: ekleme, güncelleştirme, silme, dizin yeniden oluşturma, dizin birleştirme, bir veritabanını geri yüklemek ve bir veritabanını iliştirmek.

Örnekler

C.Satırları yüzdesi seçme

The Person.Contact tablo contains 19,972 rows. Aşağıdaki deyim yaklaşık olarak verir 10 satırları yüzdesi. Satır sayısı, genellikle her deyim yürütüldükten değişiklikleri döndürdü.

USE AdventureWorks ;
GO
SELECT FirstName, LastName
FROM Person.Contact 
TABLESAMPLE (10 PERCENT) ;

b.Çekirdek değeri olan satırları yüzdesi seçme

Bu BT yürütülen her saat aşağıdaki deyim aynı satır kümesi döndürür.Başlangıç değeri 205 rasgele seçildi.

USE AdventureWorks ;
GO
SELECT FirstName, LastName
FROM Person.Contact 
TABLESAMPLE (10 PERCENT) 
   REPEATABLE (205) ;

c.Bir satır sayısını seçme

Aşağıdaki ifadeyi yaklaşık olarak verir 100 satır. Döndürülen satırların sayısını önemli ölçüde değişebilir.5 Gibi küçük bir sayı belirtirseniz, sonuçlar örnekte alabilirsiniz değil.

USE AdventureWorks ;
GO
SELECT FirstName, LastName
FROM Person.Contact 
TABLESAMPLE (100 ROWS) ;

See Also

Other Resources