Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Azure Synapse Analytics
Analiz Platformu Sistemi (PDW)
Microsoft Fabric'teki SQL analiz uç noktası
Microsoft Fabric'teki ambar
Microsoft Fabric'teki SQL veritabanı
Tablo veya dizinli görünümde sorgu iyileştirme UPDATE STATISTICS veya saklı yordam sp_updatestats kullanarak sorgu performansını geliştirebilirsiniz.
İstatistiklerin güncelleştirilmesi sorguların up-totarih istatistikleriyle derlenmesini sağlar. İstatistikleri herhangi bir işlem aracılığıyla güncelleştirmek sorgu planlarının otomatik olarak yeniden derlenmesine neden olabilir. Sorgu planlarını geliştirmek ve sorguları yeniden derlemek için gereken süre arasında bir performans dengelemesi olduğundan istatistikleri çok sık güncelleştirmemenizi öneririz. Belirli dengeler uygulamanıza bağlıdır.
UPDATE STATISTICS, istatistik oluşturmaya yönelik satır örneğini sıralamak için tempdb kullanabilir.
Note
Microsoft Fabric'teki istatistikler hakkında daha fazla bilgi için bkz. Doku Veri Ambarı'ndaki İstatistikler.
Transact-SQL söz dizimi kuralları
Syntax
SQL Server ve Azure SQL Veritabanı için söz dizimi.
UPDATE STATISTICS table_or_indexed_view_name
[
{
{ index_or_statistics__name }
| ( { index_or_statistics_name } [ , ...n ] )
}
]
[ WITH
[
FULLSCAN
[ [ , ] PERSIST_SAMPLE_PERCENT = { ON | OFF } ]
| SAMPLE number { PERCENT | ROWS }
[ [ , ] PERSIST_SAMPLE_PERCENT = { ON | OFF } ]
| RESAMPLE
[ ON PARTITIONS ( { <partition_number> | <range> } [ , ...n ] ) ]
| <update_stats_stream_option> [ , ...n ]
]
[ [ , ] [ ALL | COLUMNS | INDEX ]
[ [ , ] NORECOMPUTE ]
[ [ , ] INCREMENTAL = { ON | OFF } ]
[ [ , ] MAXDOP = max_degree_of_parallelism ]
[ [ , ] AUTO_DROP = { ON | OFF } ]
] ;
<update_stats_stream_option> ::=
[ STATS_STREAM = stats_stream ]
[ ROWCOUNT = numeric_constant ]
[ PAGECOUNT = numeric_constant ]
Azure Synapse Analytics ve Paralel Veri Ambarı söz dizimi.
UPDATE STATISTICS [ schema_name . ] table_name
[ ( { statistics_name | index_name } ) ]
[ WITH
{
FULLSCAN
| SAMPLE number PERCENT
| RESAMPLE
}
]
[;]
Microsoft Fabric için söz dizimi.
UPDATE STATISTICS [ schema_name . ] table_name
[ ( { statistics_name } ) ]
[ WITH
{
FULLSCAN
| SAMPLE number PERCENT
}
]
[;]
Note
Bu söz dizimi, Azure Synapse Analytics'teki sunucusuz SQL havuzu tarafından desteklenmez.
Arguments
table_or_indexed_view_name
İstatistik nesnesini içeren tablonun veya dizine alınan görünümün adı.
index_or_statistics_name veya statistics_name | index_name veya statistics_name
İstatistikleri güncelleştirmek için dizinin adı veya güncelleştirilecek istatistiklerin adı.
index_or_statistics_name veya statistics_name belirtilmezse, sorgu iyileştiricisi tablo veya dizinli görünüm için tüm istatistikleri güncelleştirir. Buna deyimi kullanılarak CREATE STATISTICS oluşturulan istatistikler, açık olduğunda AUTO_CREATE_STATISTICS oluşturulan tek sütunlu istatistikler ve dizinler için oluşturulan istatistikler dahildir.
hakkında AUTO_CREATE_STATISTICSdaha fazla bilgi için bkz. ALTER DATABASE SET options. Bir tablo veya görünümün tüm dizinlerini görüntülemek için sp_helpindexkullanabilirsiniz.
FULLSCAN
Tablodaki veya dizinli görünümdeki tüm satırları tarayarak istatistikleri hesaplama.
FULLSCAN ve SAMPLE 100 PERCENT aynı sonuçlara sahip olur.
FULLSCAN seçeneğiyle SAMPLE kullanılamaz.
ÖRNEK sayısı { YÜZDE | SATIRSAY }
Sorgu iyileştiricinin istatistikleri güncelleştirirken kullanması için tablodaki veya dizinli görünümdeki satırların yaklaşık yüzdesini veya sayısını belirtir. içinPERCENT, sayı 0 ile 100 arasında olabilir ve için ROWSsayı 0'dan toplam satır sayısına kadar olabilir. Sorgu iyileştirici örneklerinin gerçek yüzde değeri veya satır sayısı, belirtilen yüzde veya sayıyla eşleşmeyebilir. Örneğin, sorgu iyileştiricisi bir veri sayfasındaki tüm satırları tarar.
SAMPLE , varsayılan örneklemeye göre sorgu planının en iyi durumda olmadığı özel durumlar için kullanışlıdır. Çoğu durumda, sorgu iyileştirici örnekleme kullandığından ve yüksek kaliteli sorgu planları oluşturmak için gereken istatistiksel olarak önemli örnek boyutunu varsayılan olarak belirlediğinden belirtmek gerekmez SAMPLE .
Note
SQL Server 2016'da (13.x) veritabanı uyumluluk düzeyi 130 kullanılırken, istatistik toplama performansını geliştirmek için istatistik oluşturmaya yönelik verilerin örneklemesi paralel olarak yapılır. Sorgu iyileştiricisi, tablo boyutu belirli bir eşiği aştığında paralel örnek istatistikleri kullanır. SQL Server 2017'den (14.x) başlayarak, veritabanı uyumluluk düzeyi ne olursa olsun, aşırı LATCH beklemelerle ilgili olası performans sorunlarını önlemek için davranış yeniden seri tarama kullanmaya döndürüldü. İstatistikleri güncelleştirirken sorgu planının geri kalanı uygunsa paralel yürütmeyi sürdürür.
SAMPLE seçeneğiyle FULLSCAN kullanılamaz. Ne belirtildiğinde ne de SAMPLEFULLSCAN belirtilmediğinde, sorgu iyileştiricisi örneklenmiş verileri kullanır ve örnek boyutunu varsayılan olarak hesaplar.
veya 0 PERCENTbelirtilmesine 0 ROWS karşı öneririz.
0 PERCENT veya 0 ROWS belirtildiğinde istatistik nesnesi güncelleştirilir ancak istatistik verileri içermez.
Çoğu iş yükü için tam tarama gerekmez ve varsayılan örnekleme yeterlidir. Ancak, çok çeşitli veri dağıtımlarına duyarlı olan bazı iş yükleri için daha fazla örnek boyutu ve hatta tam tarama gerekebilir. Tam tarama ile tahminler örneklenen taramadan daha doğru hale gelebilir ancak karmaşık planlar önemli ölçüde yararlı olmayabilir.
Daha fazla bilgi için bkz.
RESAMPLE
En son örnek oranını kullanarak her bir istatistiği güncelleştirin.
kullanmak RESAMPLE tam tablo taramasına neden olabilir. Örneğin, dizinlerin istatistikleri, örnek hızları için tam tablo taraması kullanır. Örnek seçeneklerden (SAMPLE, FULLSCAN, RESAMPLE) hiçbiri belirtilmediğinde, sorgu iyileştirici verileri örnekler ve varsayılan olarak örnek boyutunu hesaplar.
Microsoft Fabric'teki RESAMPLE Ambar'da desteklenmez.
PERSIST_SAMPLE_PERCENT = { ON | KAPALI }
Şunlar için geçerlidir: SQL Server 2016 (13.x) Service Pack 1 CU4, SQL Server 2017 (14.x) Service Pack 1 veya SQL Server 2019 (15.x) ve sonraki sürümleri, Azure SQL Veritabanı, Azure SQL Yönetilen Örneği
olduğunda ONistatistikler, örnekleme yüzdesini açıkça belirtmeyen sonraki güncelleştirmeler için ayarlanan örnekleme yüzdesini korur. olduğunda OFF, istatistik örnekleme yüzdesi, açıkça örnekleme yüzdesi belirtmeyen sonraki güncelleştirmelerde varsayılan örneklemeye sıfırlanır. Varsayılan değer: OFF.
DBCC SHOW_STATISTICS
Yürütülürse AUTO_UPDATE_STATISTICS , varsa kalıcı örnekleme yüzdesini veya yoksa varsayılan örnekleme yüzdesini kullanır.
RESAMPLE davranışı bu seçenekten etkilenmez.
Tablo kesilirse, kesilen yığın veya B ağacı (HoBT) üzerinde oluşturulan tüm istatistikler varsayılan örnekleme yüzdesini kullanmaya geri döner. Benzer şekilde, satır içermeyen bir nesnede istatistikler güncelleştirilirse, daha önce yapılandırılmış olsa PERSIST_SAMPLE_PERCENT bile varsayılan örnekleme yüzdesini kullanmaya geri döner.
Note
SQL Server'da, daha önce ile PERSIST_SAMPLE_PERCENTgüncelleştirilmiş istatistikleri olan bir dizin yeniden oluşturulurken kalıcı örnek yüzdesi varsayılana sıfırlanır. SQL Server 2016 (13.x) SP2 CU17, SQL Server 2017 (14.x) CU26 ve SQL Server 2019 (15.x) CU10'dan başlayarak, dizini yeniden oluştururken bile kalıcı örnek yüzdesi korunur.
ON PARTITIONS ( { <partition_number> | <range> } [ , ... n ] ) ]
için geçerlidir: SQL Server 2014 (12.x) ve sonraki sürümler
Yan tümcesinde ON PARTITIONS belirtilen bölümleri kapsayan yaprak düzeyi istatistiklerinin yeniden derlenip genel istatistikleri oluşturmak için birleştirilmesini zorlar.
WITH RESAMPLE gereklidir çünkü farklı örnek oranlarıyla oluşturulmuş bölüm istatistikleri bir araya getirilemiyor.
TÜMÜ | SÜTUNLAR | DİZİN
Tüm mevcut istatistikleri, bir veya daha fazla sütunda oluşturulan istatistikleri veya dizinler için oluşturulan istatistikleri güncelleştirin. Seçeneklerden hiçbiri belirtilmezse, UPDATE STATISTICS deyimi tablodaki veya dizinli görünümdeki tüm istatistikleri güncelleştirir.
NORECOMPUTE
Belirtilen istatistikler için otomatik istatistik güncelleştirme seçeneğini AUTO_UPDATE_STATISTICSdevre dışı bırakın. Bu seçenek belirtilirse, sorgu iyileştiricisi bu istatistik güncelleştirmesini tamamlar ve gelecekteki güncelleştirmeleri devre dışı bırakır.
Seçenek davranışını yeniden etkinleştirmek AUTO_UPDATE_STATISTICS için seçeneği olmadan UPDATE STATISTICS yeniden çalıştırın NORECOMPUTE veya komutunu çalıştırınsp_autostats.
Warning
Bu seçeneğin kullanılması, en iyi olmayan sorgu planları oluşturabilir. Bu seçeneğin tedbirli bir şekilde ve ardından yalnızca nitelikli bir sistem yöneticisi tarafından kullanılmasını öneririz.
Seçeneği hakkında AUTO_STATISTICS_UPDATE daha fazla bilgi için bkz. ALTER DATABASE SET options.
ARTıMLı = { ON | KAPALI }
için geçerlidir: SQL Server 2014 (12.x) ve sonraki sürümler
olduğunda ON, istatistikler bölüm istatistiklerine göre yeniden oluşturulur. olduğunda OFF, istatistik ağacı bırakılır ve SQL Server istatistikleri yeniden hesaplar. Varsayılan değer: OFF.
Bölüm başına istatistikler desteklenmiyorsa bir hata oluşturulur. Artımlı istatistikler aşağıdaki istatistik türleri için desteklenmez:
- Temel tabloyla bölümle hizalanmamış dizinlerle oluşturulan istatistikler.
- Always On okunabilir ikincil veritabanlarında oluşturulan istatistikler.
- Salt okunur veritabanlarında oluşturulan istatistikler.
- Filtrelenmiş dizinlerde oluşturulan istatistikler.
- Görünümlerde oluşturulan istatistikler.
- İç tablolarda oluşturulan istatistikler.
- Uzamsal dizinler veya XML dizinleriyle oluşturulan istatistikler.
MAXDOP = max_degree_of_parallelism
için geçerlidir: SQL Server (SQL Server 2016 (13.x) SP2 ve SQL Server 2017 (14.x) CU3 ile başlayarak).
İstatistik işleminin max degree of parallelism süresi boyunca yapılandırma seçeneğini geçersiz kılar. Daha fazla bilgi için bkz. Sunucu yapılandırması: en yüksek paralellik derecesi. Paralel plan yürütmesinde kullanılan işlemci sayısını sınırlamak için kullanın MAXDOP . Maksimum değer 64 işlemcidir.
max_degree_of_parallelism olabilir:
1
Paralel plan oluşturmayı bastırır.
>1
Paralel istatistik işleminde kullanılan en fazla işlemci sayısını, geçerli sistem iş yüküne göre belirtilen sayı veya daha az ile kısıtlar.
0 (varsayılan)
Geçerli sistem iş yüküne göre gerçek işlemci sayısını veya daha azını kullanır.
update_stats_stream_option
Yalnızca bilgilendirme amacıyla tanımlanır. Desteklenmiyor. Gelecekteki uyumluluk garanti edilmemektedir.
AUTO_DROP = { ON | KAPALI }
için geçerlidir: SQL Server 2022 (16.x) ve sonraki sürümler
Şu anda, istatistikler bir müşteri veritabanındaki üçüncü taraf bir araç tarafından oluşturulduysa, bu istatistik nesneleri müşterinin istediği şema değişikliklerini engelleyebilir veya bu değişikliklere müdahale edebilir.
(SQL Server 2022 (16.x) ile başlayarak)| Bu özellik, bir şema değişikliğinin istatistikler tarafından engellenmesi
Note
Otomatik oluşturulan istatistiklerde özelliği ayarlamaya veya kaldırmaya AUTO_DROP çalışmak hatalara neden olabilir. Otomatik oluşturulan istatistikler her zaman otomatik bırakma kullanır. Bazı yedeklemeler geri yüklendiğinde, istatistik nesnesinin bir sonraki güncelleştirilişine (el ile veya otomatik olarak) kadar bu özellik yanlış ayarlanmış olabilir. Ancak Azure SQL Veritabanı, Azure SQL Yönetilen Örneği ve SQL Server 2022 (16.x) ve sonraki sürümlerde otomatik olarak oluşturulan istatistikler her zaman AUTO_DROP ayarlanmış gibi davranır.
Remarks
İSTATİSTİkLerİ NE ZAMAN GÜNCELLESTİĞİ
UPDATE STATISTICSne zaman kullanılacağı hakkında daha fazla bilgi için bkz. İstatistikleri güncelleştirme.
Limitations
İstatistiklerin güncelleştirilmesi dış tablolarda desteklenmez. Dış tablodaki istatistikleri güncelleştirmek için istatistikleri bırakın ve yeniden oluşturun.
Columnstore dizininde otomatik olarak oluşturulan istatistiklerin güncelleştirilmesi desteklenmez. Bu deneme 35337 hatasıyla sonuçlanır:
UPDATE STATISTICS failed because statistics can't be updated on a columnstore index. UPDATE STATISTICS is valid only when used with the STATS_STREAM option.Daha fazla bilgi için bkz. Dizin istatistikleri.Tek tek sütunlar veya sütun deposu dizininin sütun kümeleri ile ilgili istatistiklerin güncelleştirilmesi desteklenir.
MAXDOPseçeneğiSTATS_STREAM,ROWCOUNTvePAGECOUNTseçenekleriyle uyumlu değildir.MAXDOPseçeneği, kullanılıyorsa Resource Governor iş yükü grubuMAX_DOPayarıyla sınırlıdır.
tüm istatistikleri sp_updatestats ile güncelleştirme
Veritabanındaki tüm kullanıcı tanımlı ve iç tabloların istatistiklerini güncelleştirme hakkında bilgi için sp_updatestatssaklı yordama bakın. Örneğin, aşağıdaki komut veritabanının tüm istatistiklerini güncelleştirmek için sp_updatestats çağırır.
EXECUTE sp_updatestats;
Otomatik dizin ve istatistik yönetimi
Dizin birleştirmeyi ve bir veya daha fazla veritabanının istatistik güncelleştirmelerini otomatik olarak yönetmek için Uyarlamalı Dizin Birleştirme gibi çözümleri kullanın. Bu yordam, diğer parametrelerin yanında bir dizini parçalanma düzeyine göre yeniden derlemeyi veya yeniden düzenlemeyi ve istatistikleri doğrusal bir eşikle güncelleştirmeyi otomatik olarak seçer.
Son İstatistik Güncelleştirmesini Belirleme
İstatistiklerin en son ne zaman güncelleştirildiğini belirlemek için STATS_DATE işlevini kullanın.
PDW / Azure Synapse Analytics
Aşağıdaki söz dizimi Analiz Platformu Sistemi (PDW) / Azure Synapse Analytics tarafından desteklenmez:
UPDATE STATISTICS t1 (a, b);
UPDATE STATISTICS t1 (a) WITH SAMPLE 10 ROWS;
UPDATE STATISTICS t1 (a) WITH NORECOMPUTE;
UPDATE STATISTICS t1 (a) WITH INCREMENTAL = ON;
UPDATE STATISTICS t1 (a) WITH STATS_STREAM = 0x01;
Permissions
Tablo veya görünümde ALTER izin gerektirir.
Examples
A. Tablodaki tüm istatistikleri güncelleştirme
Aşağıdaki örnek, SalesOrderDetail tablosundaki tüm istatistikleri güncelleştirir.
USE AdventureWorks2022;
GO
UPDATE STATISTICS Sales.SalesOrderDetail;
GO
B. Dizin istatistiklerini güncelleştirme
Aşağıdaki örnek, AK_SalesOrderDetail_rowguid tablosunun SalesOrderDetail dizininin istatistiklerini güncelleştirir.
USE AdventureWorks2022;
GO
UPDATE STATISTICS Sales.SalesOrderDetail (AK_SalesOrderDetail_rowguid);
GO
C. Yüzde 50 örnekleme kullanarak istatistikleri güncelleştirme
Aşağıdaki örnek, Name tablosundaki ProductNumber ve Product sütunlarının istatistiklerini oluşturur ve güncelleştirir.
USE AdventureWorks2022;
GO
CREATE STATISTICS Products
ON Production.Product([Name], ProductNumber)
WITH SAMPLE 50 PERCENT;
-- Time passes. The UPDATE STATISTICS statement is then executed.
UPDATE STATISTICS Production.Product (Products)
WITH SAMPLE 50 PERCENT;
D. FULLSCAN ve NORECOMPUTE kullanarak istatistikleri güncelleştirme
Aşağıdaki örnek, Products tablosundaki Product istatistikleri güncelleştirir, Product tablosundaki tüm satırların tam taramasını zorlar ve Products istatistikleri için otomatik istatistikleri kapatır.
USE AdventureWorks2022;
GO
UPDATE STATISTICS Production.Product (Products)
WITH FULLSCAN, NORECOMPUTE;
GO
Örnekler: Azure Synapse Analytics ve Analytics Platform Sistemi (PDW)
E. Tablodaki istatistikleri güncelleştirme
Aşağıdaki örnek, CustomerStats1 tablosundaki Customer istatistiklerini güncelleştirir.
UPDATE STATISTICS Customer (CustomerStats1);
F. Tam tarama kullanarak istatistikleri güncelleştirme
Aşağıdaki örnek, CustomerStats1 tablosundaki tüm satırları tarayarak Customer istatistiklerini güncelleştirir.
UPDATE STATISTICS Customer (CustomerStats1) WITH FULLSCAN;
G. Tablodaki tüm istatistikleri güncelleştirme
Aşağıdaki örnek, Customer tablosundaki tüm istatistikleri güncelleştirir.
UPDATE STATISTICS Customer;
H. AUTO_DROP ile CREATE STATISTICS kullanma
Otomatik bırakma istatistiklerini kullanmak için, istatistikleri oluşturma veya güncelleştirme işleminin "WITH" yan tümcesine aşağıdakileri eklemeniz gerekir.
UPDATE STATISTICS Customer (CustomerStats1) WITH AUTO_DROP = ON;
İlgili içerik
- Statistics
- Doku Veri Ambarı'ndaki istatistikler
- ALTER DATABASE (Transact-SQL)
- sys.dm_db_stats_properties (Transact-SQL)
- sys.dm_db_stats_histogram (Transact-SQL)
- İSTATİSTİK OLUŞTUR (Transact-SQL)
- DBCC SHOW_STATISTICS (Transact-SQL)
- DROP İSTATISTISTİKleri (Transact-SQL)
- sp_autostats (Transact-SQL)
- sp_updatestats (Transact-SQL)
- STATS_DATE (Transact-SQL)