tablesample kullanarak ayarlar sonucu sınırlama

tablesample yan tümce tümce tümce from yan tümce tümce tümcesinde tablo bir örnek sayı veya satırları YÜZDESİ olarak döndürülen satırların sayısını sınırlar.Ö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ından tablo ve tablo değerli işlevler, satır kümesi işlevler veya openxml türetilen tablolar için uygulanamaz.tablesample bir görünüm veya satır içi tanımında belirtilemez tablo değerli işlev.

Tablo BOŞLUĞU yan tümce tümce 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.Ne zaman tablesample kullanılan eski bir yükseltilir veritabanlarının karşı sürüm, veritabanı uyumluluk düzey en az 90 olarak ayarlanmış olması gerekir.İçin küme veritabanı uyumluluk düzeyi, bkz: ALTER DATABASE (Transact-SQL).

Kullanabileceğiniz tablobir örnek büyük bir hızla dönmek için örnek tablo zaman aşağıdaki koşullardan biri doğruysa:

  • Örnek at gerçekten rasgele örnek olmak zorunda düzey tek tek satır.

  • Tek tek satırlarda sayfas tablo değil aynı diğer satırları ile ilişkili sayfa.

Önemli notÖnemli

Rasgele örnek tek tek satırların gerçekten istiyorsanız, tablesample kullanarak yerine rasgele, satırları süzmek için sorguyu değiştirin.Örneğin, kullandığı aşağıdaki sorgu NEWID yaklaşık bir yüzdesi satırlar 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 column is included in the CHECKSUM expression so that NEWID() evaluates once per row to achieve sampling on a per-row basis.ifade CAST(CHECKSUM(NEWID(), SalesOrderID) & 0x7fffffff AS float / CAST (0x7fffffff AS int) değerlendiren bir rasgele için float değeri 0 ile 1 arasında.

Sistem seçeneğini kullanma

Sistem, bir ANSI sql uygulaması bağımlı örnekleme yöntem belirtir.Sistem isteğe bağlı olsa da, bu seçenek yalnızca, belirtme yöntem de örnekleme SQL Server ve varsayılan olarak uygulanır

tabloÖrnek sistem yaklaşık bir satır yüzdesini verir ve her fiziksel 8 KB'lık sayfasında rasgele bir değer üretir tablo.Rasgele bir sayfa ve sorguda belirtilen yüzde değeri bağlı olarak, bir sayfa yer alan örnek dahil veya hariç.Gelen her sayfa örnek tüm satırları döndürür sonuç küme.Örneğin belirttiğiniz, TABLESAMPLE SYSTEM 10 PERCENT, SQL Server yaklaşık yüzde 10 belirtilen veri sayfalarının tüm satırları döndürürtablo. Satır tablonun sayfalarında eşit şekilde dağıtılır ve yeterli bir tablo sayfa sayısı ise, döndürülen satırların sayısını istenen örnek boyutu yaklaşık.Ancak, her sayfa için üretilen rastgele bir değeri başka bir sayfa için oluşturulan değerler bağımsız olduğundan, istenmiş olan çok sayfaları daha büyük veya daha küçük bir yüzdesi döndü.TOP(n) işleç, belirtilen en fazla satır sayısını sınırlandırmak için kullanılabilir.

Ne zaman satır sayısı belirlendiğinde, toplam satır sayısına göre yüzde yerine tablo, sayı satırları yüzdesi dönüştürülür ve bu nedenle, sayfaları olduğunu, geri gönderilmelidir.tablesample işlemi sonra yüzde işlediği yapılır.

Tablo tek bir yapılırsa, sayfa, ya da tüm satırlarda sayfa döndürülen veya hiç bir satır döndürdü.Bu durumda, tablesample sistem yalnızca yüzde 100 veya yüzde 0 satırları üzerinde dönebilirsiniz bir sayfabakılmaksızın satır sayısı sayfa.

(Tarama, öbek veya kümelenmiş dizin var) bir tablo taraması bu tabloyu kullanmak için yürütme planı için belirli bir tablo tablesample sistemini kullanarak sınırlar.Tarama işlemi bir tablo planı göstermesine rağmen sonuç küme bulunan sayfaları veri dosyasından okumaya gerçekten gereklidir.

Önemli notÖnemli

Sistem tablesample yan tümce tümce tümce bazı dikkatli ve anlayış bazı bazı örnekleme kullanmanın olası etkileri kullanılmalıdır.Örneğin, iki tablonun birleştirmek her iki tabloda her satır için bir eşleşme dönmek olasıdır; Ancak, her iki tablo tablesample sistem belirtilmemişse, unsampled tablosundan döndürülen bazı satırların örneklenen tabloda eşleşen bir satır vardır olması ihtimali düşüktür.Bu davranış verileri gerçekten geçerli olduğunda temel tablolarda, bir veri tutarlılık sorun olduğunu düşünüyorsanız yol açabilir.Benzer şekilde, tablesample sistem katılan her iki tablo için belirtilmişse, algılanan sorunu daha büyük olabilir.

YİNELENEBİLİR seçeneğini kullanma

YİNELENEBİLİR seçeneği yeniden döndürülecek seçili bir örnek olur.Ne zaman repeatable belirtilen ile aynı repeat_seed değeri, SQL Server aynı alt küme küme satır kümesi döndürür sürece hiçbir değişiklik yapıldı tablo.Ne zaman repeatable belirtilen bir farklı repeat_seed değeri, SQL Server genellikle döndürecektir farklı bir örnek satır tablo.Tablo aşağıdaki eylemleri değişiklikleri kabul edilir: ekleme, güncelleştirme, silme, dizini yeniden oluşturuluyor, dizin birleştirme, bir veritabanını geri yüklemek ve bir veritabanını iliştirmek.

Örnekler

A.Seçme satırları yüzdesi

The Person.Person table contains 19,972 rows.Yaklaşık olarak aşağıdaki deyim döndürür 'ünü10 satırlar.Satır değişiklikleri deyim yürütüldü her saat genellikle döndürdü.

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

B.Tohum değeri olan satırları yüzdesi seçme

Aşağıdaki deyim aynı satır küme döndürür her saat yürütülecek olan.Tohum değerini 205 Ranges seçildi.

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

C.Bir dizi satır seçme

Yaklaşık olarak aşağıdaki deyim döndürür 100 satır.Döndürülen satır sayısını önemli ölçüde değişebilir.5 Gibi küçük bir sayı belirtirseniz, sonuçlar örnek alabilirsiniz değil.

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

Ayrıca bkz.

Başvuru