İstatistikler (Transact-sql) oluştur

Filtre uygulanmış istatistikleri, bir veya daha fazla sütun bir tablo veya dizin oluşturulmuş görünüm içeren sorgu performansı istatistikleri oluşturur. Sorguların çoğu için sorgu en iyi duruma getiricisi zaten kaliteli sorgu planı için gerekli istatistikleri oluşturur; Bazı durumlarda, ek istatistikleri STATISTICS create oluşturmak veya sorgu performansını artırmak için sorgu tasarımını değiştirmeniz gerekir.

Filtre uygulanmış istatistikleri veri iyi tanımlanmış alt kümeleri seçtiğiniz sorguları için sorgu performansı artırabilir. Filtre uygulanmış istatistikleri filtre yüklemi istatistiklere dahil edilen veri alt kümesini seçmek için where yan tümcesini kullanın. create STATISTICS-ebilmek kullanma tempdbsatır istatistikleri oluşturmak için örnek sıralamak için.

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

Konu bağlantısı simgesi Transact-SQL Sözdizim 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 dizin oluşturulmuş görünüm istatistikleri oluşturmak için adıdır. İstatistik tabloları üzerinde oluşturulabilir veya dizinlenmiş görünümler başka bir veritabanındaki bir nitelenmiş tablo adı belirterek.

  • column [ ,…n]
    Anahtar sütunu veya istatistikler oluşturmak için anahtar sütunlar listesi belirtir. Dizin anahtar sütunu aşağıdaki istisnalar olarak belirtilen sütun belirtebilirsiniz:

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

    • Hesaplanan sütunlar ARITHABORT ve quoted_ıdentıfıer veritabanı ayarlarını on ise yalnızca belirtilebilir.

    • clr türü kullanıcı tanımlı sütunlar olabilir Eğer türü çekmek ikili sıralama belirtilen. Hesaplanan sütunlar yöntemi etkinleştirilmelerinde bir kullanıcı tanımlı türü sütun olabilir olarak tanımlanan yöntemleri deterministic işaretlenmiş ise belirtilen.

  • Burada <filter_predicate>
    İstatistikleri nesnesi oluştururken eklemek için satırlar alt kümesini seçmek için ifade belirtir. Bir filtre yüklemi ile oluşturulan istatistikleri, filtre uygulanmış istatistikleri denir. Filtre yüklemi basit karşılaştırma mantığı kullanır ve hesaplanmış bir sütun, bir kayma veri türü sütununu udt sütun başvuru yapamazsınız veya bir hierarchyIDveri türü sütununu. null rakamları kullanılarak Karşılaştırmalar karşılaştırma işleçleri ile izin verilmez. IS null ve IS not null işleçleri kullanın.

    Filtre yüklemler için bazı örnekler Production.BillOfMaterialstablosu:

    WHERE StartDate > '20000101' AND EndDate <= '20000630'

    WHERE ComponentID IN (533, 324, 753)

    WHERE StartDate IN ('20000404', '20000905') AND EndDate IS NOT NULL

    Filtre yüklemler hakkında daha fazla bilgi için bkz: Filtre uygulanmış dizinler oluşturma.

  • FULLSCAN
    Tablo veya dizinli görünümdeki tüm satırları tarayarak istatistikleri hesaplayın. FULLSCAN ve SAMPLE 100 PERCENT aynı sonuçları verir. FULLSCAN, SAMPLE seçeneği ile kullanılamaz.

  • SAMPLE number { PERCENT | ROWS }
    Tablo veya dizin oluşturulmuş görünüm istatistikleri oluşturur, kullanılacak query optimizer için yaklaşık yüzde ya da satır sayısını belirtir. Yüzde, number0 ile 100 arasında ve satırlar için olabilir numberToplam satır sayısı 0'dan olabilir. Sorgu iyileştiricinin örneklediği gerçek yüzde veya satır sayısı, belirtilen yüzde veya sayı ile eşleşmeyebilir. Örneğin, sorgu iyileştirici bir veri sayfasındaki tüm satırları tarar.

    SAMPLE, sorgu planının varsayılan örneklemeye göre en iyisi olmadığı özel durumlarda yararlıdır. Çoğu durumda, sorgu en iyi duruma getiricisi zaten örnekleme kullanır ve istatistiksel olarak önemli örnek boyutu varsayılan olarak belirler, çünkü örnek kaliteli sorgu planları oluşturmak için gereken belirtmek gerekli değildir.

    SAMPLE, FULLSCAN seçeneği ile birlikte kullanılamaz. SAMPLE ya da FULLSCAN belirtilmediğinde, sorgu iyileştirici, varsayılan olarak örnek verileri kullanır ve örnek boyutunu hesaplar.

    0 PERCENT veya 0 ROWS belirtmemenizi öneririz. YÜZDE 0 veya SATIRLARI belirtilen istatistikleri nesne oluşturulur ancak istatistik veri içermiyor.

  • NORECOMPUTE
    Devre dışı bırakmak için otomatik istatistik güncelleştirme seçeneği, AUTO_STATISTICS_UPDATE, statistics_name. Bu seçenek belirtilirse, sorgu en iyi duruma getiricisi için devam eden istatistikleri güncelleştirme tamamlayacak statistics_nameve gelecekteki güncelleştirmeleri devre dışı bırak.

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

    Dikkat notuDikkat

    Bu seçeneği kullanmak en iyi olmayan sorgu planları üretebilir. Bu seçeneğin tutumlu olarak ve yalnızca yetkin bir sistem yöneticisi tarafından kullanılmasını öneririz.

    AUTO_STATISTICS_UPDATE seçeneği hakkında daha fazla bilgi için bkz: alter database set seçenekleri (Transact-sql). İstatistikleri güncelleştirmeleri re-enabling ve devre dışı bırakma hakkında daha fazla bilgi için bkz: İstatistikler.

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

Açıklamalar

En fazla 32 sütun istatistikleri nesne başına listeleyebilirsiniz.

Ne zaman kullanım istatistikleri oluşturma

create STATISTICS kullanma hakkında daha fazla bilgi için bkz: İstatistikler.

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

C.sys.sql_expression_dependencies Katalog görünümü izler başvuru bağımlılık filtre uygulanmış istatistikleri yüklemi her sütun. Damla değil, yeniden adlandırmak veya bir filtre uygulanmış istatistikleri yüklemi tanımlanan tablo sütun tanımını değiştirmek için filtre uygulanmış istatistikleri oluşturmadan önce tablo sütunları üzerinde gerçekleştirdiğiniz işlemleri düşünün.

İzinler

alter table iznine veya kullanıcı tablo veya dizin oluşturulmuş görünüm sahibi olmalı, ya da kullanıcı bir üyesi olmanız gerekir db_ddladmin veritabanı rolü.

Örnekler

A.create STATISTICS percent örnek numarası ile kullanarak

Aşağıdaki örnek oluşturur ContactMail1istatistikleri, yüzde 5 ' rasgele bir örnek kullanarak ContactIDve EmailAddresssütunları Contacttablo AdventureWorksveritabanı.

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

B.Kullanarak fullscan ve norecompute ile istatistik oluştur

Aşağıdaki örnek oluşturur ContactMail2tüm satırlar için istatistikleri ContactIDve EmailAddresssütunları Contacttablo ve devre dışı bırakır istatistikler otomatik yeniden.

CREATE STATISTICS NamePurchase
    ON AdventureWorks2012.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'i ve ardından satırları seçer EmailPromotion2 eşit.

USE AdventureWorks2012;
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

Ayrıca bkz.

Başvuru

UPDATE STATISTICS (Transact-SQL)

sp_updatestats (Transact-sql)

dbcc SHOW_STATISTICS (Transact-sql)

İstatistikler (Transact-sql) bırak

verir.Istatistik (Transact-sql)

sys.stats_columns (Transact-sql)

Kavramlar

İstatistikler