Aracılığıyla paylaş


İSTATİSTİKLER (Transact-SQL) oluştur

Filtre uygulanmış istatistikleri, bir tablo ya da dizinli görünümbir veya daha fazla sütun dahil olmak üzere, sorgu en iyi duruma getirme istatistikleri oluşturur.Sorguların çoğu için sorgu iyileştiricisi zaten yüksek kaliteli sorgu planı için gerekli istatistikleri oluşturur; birkaç durumlarda ek istatistikler oluşturmak İSTATİSTİKLERİ oluşturmak veya sorgu performansını artırmak için sorgu tasarımını değiştirmek gerekir.

Filtre uygulanmış istatistikleri iyi tanımlanmış veri alt kümelerine seçtiğiniz sorguları için sorgu performansını artırır.Filtre uygulanmış istatistikleri filtre yüklemi where yan tümce tümcesinde İstatistiklere dahil veri alt küme seçmek için kullanın.create STATISTICS kullanarak tempdb Sıralama örnek satır oluşturma istatistikleri.

create STATISTICS kullanıldığı durumlar da dahil olmak üzere istatistikleri hakkında daha fazla bilgi için bkz: İstatistikler sorgu performansını artırmak için kullanma.

Konu bağlantısı simgesiTransact-SQL sözdizimi kuralları

Sözdizimi

CREATE STATISTICS statistics_name 
ON { table_or_indexed_view_name } ( column [ ,...n ] ) 
    [ WHERE <filter_predicate> ]
    [ WITH 
        [ [ FULLSCAN 
          | SAMPLE number { PERCENT | ROWS } 
          | STATS_STREAM = stats_stream ] [ , ] ] 
        [ NORECOMPUTE ] 
    ] ;

<filter_predicate> ::= 
    <conjunct> [AND <conjunct>]

<conjunct> ::=
    <disjunct> | <comparison>

<disjunct> ::=
        column_name IN (constant ,…)

<comparison> ::=
        column_name <comparison_op> constant

<comparison_op> ::=
    IS | IS NOT | = | <> | != | > | >= | !> | < | <= | !<

Bağımsız değişkenler

  • statistics_name
    İstatistikler oluşturmak için adıdır.

  • table_or_indexed_view_name
    tablo veya istatistikler oluşturmak için dizinli görünüm adıdır.İstatistik tabloları üzerinde oluşturulabilir veya dizin oluşturulmuş görünümler başka bir veritabanındaki bir nitelenmiş tablo adı belirterek.

  • column [ ,…n]
    anahtarsütun veya istatistikler oluşturmak için anahtar sütunlar listesi belirtir. Aşağıdaki özel durumlar dışında bir dizin anahtarsütun olarak belirtilen herhangi bir sütun belirtebilirsiniz:

    • xml, tam metin ve FILESTREAM sütunları belirtilemez.

    • Hesaplanan sütunlar ARITHABORT ve QUOTED_IDENTIFIER veritabanı ayarları açık olup yalnızca belirtilebilir.

    • CLR kullanıcı tanımlı türü sütunlar olabilir ikili sıralama türünü destekleyip desteklemediğini belirtilen.Hesaplanan sütunlar yöntem çağırmaları bir kullanıcı tanımlı tür sütun olarak tanımlanan yöntemleri deterministic işaretlenmiş, belirtilen.CLR kullanıcı tanımlı türü sütunlar oluşturma hakkında daha fazla bilgi için bkz: clr kullanıcı tanımlı türleri ile çalışma.

    Birleştirilmiş sütun değerlerini izin verilen en büyük boyutu 900 bayttır.

  • Burada <filter_predicate>
    İstatistikleri nesnesi oluştururken eklenecek satır alt küme seçmek için bir ifade belirtir.Filtre uygulanmış istatistikleri bir süzgeç belirtimi ile oluşturulan istatistikleri olarak adlandırılır.Filtre yüklemi kullandığı basit karşılaştırma mantığı ve hesaplanmış bir sütun, bir UDT sütun, uzamsal veri türü sütun, başvuramaz veya bir hierarchyID veri türü sütun.null harfleri kullanarak karşılaştırmaları ile karşılaştırma işleçleri izin verilmez.IS null ve IS not null işleçleri kullanın.

    Filtre yüklemler için bazı örnekler aşağıda Production.BillOfMaterials tablo:

    WHERE StartDate > '20040101' AND EndDate <= '20040630'

    WHERE ComponentID IN (533, 324, 753)

    WHERE StartDate IN ('20040404', '20040905') AND EndDate IS NOT NULL

    Filtre yüklemler hakkında daha fazla bilgi için bkz: Filtre uygulanmış dizin tasarım yönergeleri.

  • FULLSCAN
    İstatistikleri hesaplamak için tablo veya dizinli görünümtüm satırların tarayarak.YÜZDE 100 fullscan ve örnek aynı sonuçlarvardır.fullscan örnek seçeneğiyle birlikte kullanılamaz.

  • Örnek number {yüzde | Satır}
    tablo ya da dizinli görünüm sorgu iyileştiricisi istatistikleri oluştururken kullanmak için yaklaşık yüzde ya da satır sayısını belirtir.İçin yüzde number 0-100 ve satır için olabilir number toplam sayısı 0 olabilirsatırlar.sorgu iyileştiricisi örnekleri gerçek yüzdesi veya satır sayısı yüzde veya belirtilen numarası eşleşmeyebilir.Örneğin, bir veri sayfatüm satırlar sorgu iyileştiricisi tarar.

    ÖRNEK, varsayılan örnekleme, dayalı sorgu planı en iyi olmadığı özel durumlarda yararlıdır.Çoğu durumda, çünkü zaten örnekleme kullanır ve varsayılan olarak, yüksek kaliteli sorgu planları oluşturmak için gerekli istatistiksel olarak önemli örnek boyutu belirler sorgu iyileştiricisi örnek belirtmek gerekli değildir.

    Örnek fullscan seçeneğiyle birlikte kullanılamaz.Örnek kendisi fullscan belirtildiğinde, sorgu iyileştiricisi örneklenen verileri kullanır ve örnek boyutu varsayılan olarak hesaplar.

    YÜZDE 0 ya da 0 satır belirterek karşı öneririz.YÜZDE 0 veya SATIRLARI belirtilen istatistikleri nesne oluşturulur ancak istatistik verileri içermez.

  • NORECOMPUTE
    Otomatik istatistik güncelleştirme seçeneği, AUTO_STATISTICS_UPDATE, için devre dışı statistics_name.Bu seçenek belirtilmezse, sorgu iyileştiricisi için devam eden istatistikleri güncelleştirme tamamlayacak statistics_name ve gelecekteki güncelleştirmeleri devre dışı bırakın.

    İstatistikleri güncelleştirmeleri yeniden etkinleştirmek için istatistikleri ile kaldırma Bırakın İSTATİSTİKLERİ ve create STATISTICS norecompute seçeneği olmadan çalıştırın.

    Dikkat notuDikkat

    Bu seçenek kullanılarak hassasiyetli sorgu planları üretebilir.Tutumlu, bu seçeneği kullanmanızı öneririz ve sonra da tam sistem yöneticisi tarafından yalnızca.

    AUTO_STATISTICS_UPDATE seçeneği hakkında daha fazla bilgi için bkz: alter database set seçenekleri (Transact-SQL).Devre dışı bırakma ve yeniden devreye istatistikleri güncelleştirmeleri hakkında daha fazla bilgi için bkz: İstatistikler sorgu performansını artırmak için kullanma.

  • stats_stream **=**stats_stream
    Yalnızca bilgi amaçlı olarak belirtilmiştir. Desteklenmez. Gelecekteki uyumluluk garanti edilmez.

Açıklamalar

Aşağıdaki tablo en büyük sayılar için istatistikleri ile ilgili kategoriler için verir.

Kategori İstatistikleri

Maksimum

İstatistikleri nesne başına sütun

32

Dizinler üzerinde oluşturulan istatistikleri

Dizin ve tablobaşına 1000 başına 1

Sütunlar üzerinde oluşturulan istatistikleri

tablobaşına 30.000

create İSTATİSTİKLERİNİ kullanma

create STATISTICS kullanma hakkında daha fazla bilgi için bkz: İstatistikler sorgu performansını artırmak için kullanma.

Filtre uygulanmış istatistikleri için başvuru bağımlılıklar

Sys.sql_expression_dependencies Katalog görünümü, her bir sütun filtre uygulanmış istatistikleri yüklemi başvuru bağımlılık olarak izler.Olamaz bırakın, yeniden adlandırmak veya filtre uygulanmış istatistikleri belirtimi içinde tanımlı bir tablosütun tanımını çünkü filtre uygulanmış istatistikleri oluşturmadan önce tablo sütunları üzerinde gerçekleştirdiğiniz işlemleri düşünün.

İzinler

İstatistikler oluşturmak için kullanıcı tablo veya dizinli görünüm sahibi olmanız veya kullanıcı aşağıdaki roller birinin üye olmanız gerekir: sysadmin sabit sunucu rolü, db_owner veritabanı rolü, sabit veya db_ddladmin veritabanı rolüsabit.

Örnekler

A.create STATISTICS yüzde örnek numarası ile kullanma

Aşağıdaki örnek oluşturur ContactMail1 yüzde 5'in rasgele örnek kullanarak istatistiklerini, BusinessEntityID ve EmailAddress sütunlarından Person tablo AdventureWorks2008R2 veritabanı.

USE AdventureWorks2008R2;
GO
CREATE STATISTICS ContactMail1
    ON Person.Person (BusinessEntityID, EmailPromotion)
    WITH SAMPLE 5 PERCENT;

B.create İSTATİSTİKLERİ fullscan ve norecompute ile kullanma

Aşağıdaki örnek oluşturur ContactMail2 tüm satırları istatistikleri BusinessEntityID ve EmailAddress sütunlarından Person tablo ve otomatik istatistik recomputing devre dışı bırakır

CREATE STATISTICS NamePurchase
    ON AdventureWorks2008R2.Person.Person (BusinessEntityID, EmailPromotion)
    WITH FULLSCAN, NORECOMPUTE;

C.Filtre uygulanmış istatistikleri oluşturmak için create STATISTICS kullanma

Filtre uygulanmış istatistikleri aşağıdaki örnek oluşturur ContactPromotion1.Veritabanı Altyapısı Örnekler veri yüzde 50'si ve sonra da satır'ı seçer EmailPromotion 2 eşit.

USE AdventureWorks2008R2;
GO
IF EXISTS (SELECT name FROM sys.stats
    WHERE name = N'ContactPromotion1'
    AND object_id = OBJECT_ID(N'Person.Person'))
DROP STATISTICS Person.Person.ContactPromotion1
GO
CREATE STATISTICS ContactPromotion1
    ON Person.Person (BusinessEntityID, LastName, EmailPromotion)
WHERE EmailPromotion = 2
WITH SAMPLE 50 PERCENT;
GO