Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Base de Dados SQL do Azure
Instância Gerida do Azure SQL
Azure Synapse Analytics
Sistema de Plataforma de Análise (PDW)
Ponto de Extremidade de Análise SQL no Microsoft Fabric
Armazém no Microsoft Fabric
Base de Dados SQL no Microsoft Fabric
Atualiza a otimização de consultas estatísticas em uma tabela ou exibição indexada. Por padrão, o otimizador de consulta já atualiza as estatísticas conforme necessário para melhorar o plano de consulta; Em alguns casos, você pode melhorar o desempenho da consulta usando o UPDATE STATISTICS ou o procedimento armazenado sp_updatestats atualizar estatísticas com mais frequência do que as atualizações padrão.
A atualização das estatísticas garante que as consultas sejam compiladas com estatísticas de up-todata. A atualização de estatísticas através de qualquer processo pode fazer com que os planos de consulta sejam recompilados automaticamente. Recomendamos não atualizar estatísticas com muita frequência porque há uma compensação de desempenho entre melhorar os planos de consulta e o tempo necessário para recompilar consultas. As compensações específicas dependem da sua aplicação.
UPDATE STATISTICS pode usar tempdb para classificar a amostra de linhas para criar estatísticas.
Note
Para obter mais informações sobre estatísticas no Microsoft Fabric, consulte Estatísticas no Fabric Data Warehouse.
Transact-SQL convenções de sintaxe
Syntax
Sintaxe do SQL Server e do Banco de Dados SQL do Azure.
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 ]
Sintaxe para o Azure Synapse Analytics e o Parallel Data Warehouse.
UPDATE STATISTICS [ schema_name . ] table_name
[ ( { statistics_name | index_name } ) ]
[ WITH
{
FULLSCAN
| SAMPLE number PERCENT
| RESAMPLE
}
]
[;]
Sintaxe do Microsoft Fabric.
UPDATE STATISTICS [ schema_name . ] table_name
[ ( { statistics_name } ) ]
[ WITH
{
FULLSCAN
| SAMPLE number PERCENT
}
]
[;]
Note
Essa sintaxe não é suportada pelo pool SQL sem servidor no Azure Synapse Analytics.
Arguments
table_or_indexed_view_name
O nome da tabela ou modo de exibição indexado que contém o objeto statistics.
index_or_statistics_name ou statistics_name | index_name ou statistics_name
O nome do índice a ser atualizado ou o nome das estatísticas a serem atualizadas. Se index_or_statistics_name ou statistics_name não for especificado, o otimizador de consulta atualizará todas as estatísticas da tabela ou exibição indexada. Isso inclui estatísticas criadas usando a CREATE STATISTICS instrução, estatísticas de coluna única criadas quando AUTO_CREATE_STATISTICS está ativado e estatísticas criadas para índices.
Para obter mais informações sobre AUTO_CREATE_STATISTICSo , consulte Opções ALTER DATABASE SET. Para exibir todos os índices de uma tabela ou exibição, você pode usar sp_helpindex.
FULLSCAN
Calcule estatísticas verificando todas as linhas na tabela ou no modo de exibição indexado.
FULLSCAN e SAMPLE 100 PERCENT têm os mesmos resultados.
FULLSCAN não pode ser usado com a SAMPLE opção.
AMOSTRA número { POR CENTO | LINHAS }
Especifica a porcentagem aproximada ou o número de linhas na tabela ou no modo de exibição indexado para o otimizador de consulta usar quando atualizar estatísticas. Para PERCENT, o número pode ser de 0 a 100 e para ROWS, o número pode ser de 0 ao número total de linhas. A porcentagem ou o número real de linhas que os exemplos do otimizador de consulta podem não corresponder à porcentagem ou ao número especificado. Por exemplo, o otimizador de consulta verifica todas as linhas em uma página de dados.
SAMPLE é útil para casos especiais em que o plano de consulta, baseado na amostragem padrão, não é o ideal. Na maioria das situações, não é necessário especificar SAMPLE porque o otimizador de consulta usa amostragem e determina o tamanho da amostra estatisticamente significativo por padrão, conforme necessário para criar planos de consulta de alta qualidade.
Note
No SQL Server 2016 (13.x) ao usar o nível de compatibilidade de banco de dados 130, a amostragem de dados para criar estatísticas é feita em paralelo para melhorar o desempenho da coleta de estatísticas. O otimizador de consulta usará estatísticas de exemplo paralelas sempre que o tamanho de uma tabela exceder um determinado limite. A partir do SQL Server 2017 (14.x), independentemente do nível de compatibilidade do banco de dados, o comportamento foi alterado novamente para usar uma verificação serial para evitar possíveis problemas de desempenho com esperas excessivas LATCH . O restante do plano de consulta durante a atualização das estatísticas manterá a execução paralela, se qualificado.
SAMPLE não pode ser usado com a FULLSCAN opção. Quando nem SAMPLE nem FULLSCAN é especificado, o otimizador de consulta usa dados de amostra e calcula o tamanho da amostra por padrão.
Recomendamos não especificar 0 PERCENT ou 0 ROWS. Quando 0 PERCENT ou 0 ROWS é especificado, o objeto statistics é atualizado, mas não contém dados estatísticos.
Para a maioria das cargas de trabalho, uma verificação completa não é necessária, e a amostragem padrão é adequada. No entanto, certas cargas de trabalho que são sensíveis a distribuições de dados muito variadas podem exigir um tamanho de amostra maior ou até mesmo uma verificação completa. Embora as estimativas possam se tornar mais precisas com uma varredura completa do que com uma varredura amostrada, planos complexos podem não se beneficiar substancialmente.
Para obter mais informações, consulte Componentes e conceitos de estatísticas.
RESAMPLE
Atualize cada estatística usando sua taxa de amostragem mais recente.
O uso RESAMPLE pode resultar em uma verificação de tabela completa. Por exemplo, as estatísticas para índices usam uma varredura de tabela completa para sua taxa de amostragem. Quando nenhuma das opções de exemplo (SAMPLE, FULLSCAN, RESAMPLE) é especificada, o otimizador de consulta coleta amostras dos dados e calcula o tamanho da amostra por padrão.
No Warehouse no Microsoft Fabric, RESAMPLE não há suporte.
PERSIST_SAMPLE_PERCENT = { EM | DESLIGADO }
Aplica-se a: SQL Server 2016 (13.x) Service Pack 1 CU4, SQL Server 2017 (14.x) Service Pack 1 ou SQL Server 2019 (15.x) e versões posteriores, Banco de Dados SQL do Azure, Instância Gerenciada SQL do Azure
Quando ON, as estatísticas manterão a porcentagem de amostragem definida para atualizações subsequentes que não especificam explicitamente uma porcentagem de amostragem. Quando OFF, a porcentagem de amostragem de estatísticas será redefinida para a amostragem padrão em atualizações subsequentes que não especificam explicitamente uma porcentagem de amostragem. A predefinição é OFF.
DBCC SHOW_STATISTICS e sys.dm_db_stats_properties expõem o valor percentual da amostra persistente para a estatística selecionada.
Se AUTO_UPDATE_STATISTICS for executado, ele usa a porcentagem de amostragem persistente, se disponível, ou usa a porcentagem de amostragem padrão, se não.
RESAMPLE não é afetado por esta opção.
Se a tabela estiver truncada, todas as estatísticas construídas na pilha truncada ou na árvore B (HoBT) voltarão a usar a porcentagem de amostragem padrão. Da mesma forma, se as estatísticas forem atualizadas em um objeto sem linhas, ele voltará a usar a porcentagem de amostragem padrão, mesmo que PERSIST_SAMPLE_PERCENT tenha sido configurado anteriormente.
Note
No SQL Server, ao recriar um índice que anteriormente tinha estatísticas atualizadas com PERSIST_SAMPLE_PERCENTo , a porcentagem de amostra persistente é redefinida de volta ao padrão. A partir do SQL Server 2016 (13.x) SP2 CU17, SQL Server 2017 (14.x) CU26 e SQL Server 2019 (15.x) CU10, a porcentagem de amostra persistente é mantida mesmo durante a reconstrução de um índice.
EM PARTIÇÕES ( { partition_number <> | <intervalo> } [ , ... n ] ) ]
Aplica-se a: SQL Server 2014 (12.x) e versões posteriores
Força as estatísticas de nível folha que abrangem as partições especificadas na cláusula a serem recalculadas e, em ON PARTITIONS seguida, mescladas para criar as estatísticas globais.
WITH RESAMPLE é necessária porque as estatísticas de partição criadas com taxas de amostragem diferentes não podem ser mescladas.
TUDO | COLUNAS | ÍNDICE
Atualize todas as estatísticas existentes, estatísticas criadas em uma ou mais colunas ou estatísticas criadas para índices. Se nenhuma das opções for especificada, a UPDATE STATISTICS instrução atualizará todas as estatísticas na tabela ou no modo de exibição indexado.
NORECOMPUTE
Desative a opção de atualização automática de estatísticas, AUTO_UPDATE_STATISTICS, para as estatísticas especificadas. Se essa opção for especificada, o otimizador de consulta concluirá essa atualização de estatísticas e desativará atualizações futuras.
Para reativar o comportamento da AUTO_UPDATE_STATISTICS opção, execute UPDATE STATISTICS novamente sem a NORECOMPUTE opção ou execute sp_autostats.
Warning
O uso dessa opção pode produzir planos de consulta abaixo do ideal. Recomendamos o uso dessa opção com moderação e, em seguida, somente por um administrador de sistema qualificado.
Para obter mais informações sobre a AUTO_STATISTICS_UPDATE opção, consulte Opções ALTER DATABASE SET.
INCREMENTAL = { EM | DESLIGADO }
Aplica-se a: SQL Server 2014 (12.x) e versões posteriores
Quando ON, as estatísticas são recriadas de acordo com as estatísticas de partição. Quando OFFo , a árvore de estatísticas é descartada e o SQL Server recalcula as estatísticas. A predefinição é OFF.
Se as estatísticas por partição não forem suportadas, será gerado um erro. Não há suporte para estatísticas incrementais para os seguintes tipos de estatísticas:
- Estatísticas criadas com índices que não estão alinhados com a tabela base.
- Estatísticas criadas em bases de dados secundárias legíveis Always On.
- Estatísticas criadas em bases de dados só de leitura.
- Estatísticas criadas em índices filtrados.
- Estatísticas criadas em visualizações.
- Estatísticas criadas em tabelas internas.
- Estatísticas criadas com índices espaciais ou índices XML.
MAXDOP = max_degree_of_parallelism
Aplica-se a: SQL Server (a partir do SQL Server 2016 (13.x) SP2 e SQL Server 2017 (14.x) CU3).
Substitui a max degree of parallelism opção de configuração durante a operação estatística. Para obter mais informações, consulte Configuração do servidor : grau máximo de paralelismo. Use MAXDOP para limitar o número de processadores usados em uma execução de plano paralelo. O máximo é de 64 processadores.
max_degree_of_parallelism pode ser:
1
Suprime a geração de planos paralelos.
>1
Restringe o número máximo de processadores usados em uma operação estatística paralela ao número especificado ou menos com base na carga de trabalho atual do sistema.
0 (padrão)
Usa o número real de processadores ou menos com base na carga de trabalho atual do sistema.
update_stats_stream_option
Identificado apenas para fins informativos. Não suportado. A compatibilidade futura não é garantida.
AUTO_DROP = { EM | DESLIGADO }
Aplica-se a: SQL Server 2022 (16.x) e versões posteriores
Atualmente, se as estatísticas forem criadas por uma ferramenta de terceiros em um banco de dados de clientes, esses objetos de estatísticas poderão bloquear ou interferir nas alterações de esquema desejadas pelo cliente.
(Começando com o SQL Server 2022 (16.x)| Este recurso permite a criação de objetos de estatísticas em um modo tal que uma alteração de esquema não ser bloqueada pelas estatísticas, mas em vez disso, as estatísticas serão descartadas. Desta forma, as estatísticas de queda automática comportam-se como estatísticas criadas automaticamente.
Note
Tentar definir ou desdefinir a AUTO_DROP propriedade em estatísticas criadas automaticamente pode gerar erros. As estatísticas criadas automaticamente sempre usam a queda automática. Alguns backups, quando restaurados, podem ter essa propriedade definida incorretamente até a próxima vez que o objeto statistics for atualizado (manual ou automaticamente). No entanto, no Banco de Dados SQL do Azure, na Instância Gerenciada do SQL do Azure e no SQL Server 2022 (16.x) e versões posteriores, as estatísticas criadas automaticamente sempre se comportam como se o AUTO_DROP tivesse sido definido.
Remarks
Quando ATUALIZAR ESTATÍSTICAS
Para obter mais informações sobre quando usar UPDATE STATISTICS, consulte Quando atualizar estatísticas.
Limitations
A atualização de estatísticas não é suportada em tabelas externas. Para atualizar estatísticas em uma tabela externa, solte e recrie as estatísticas.
Não há suporte para a atualização das estatísticas criadas automaticamente em um índice columnstore. Tentar isso resulta no erro 35337:
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.Para obter mais informações, consulte Estatísticas de índice.Há suporte para a atualização de estatísticas em colunas individuais ou conjuntos de colunas de um índice columnstore.
A opção
MAXDOPnão é compatível com as opçõesSTATS_STREAM,ROWCOUNTePAGECOUNT.A opção
MAXDOPé limitada pela configuraçãoMAX_DOPgrupo de carga de trabalho do Administrador de Recursos, se usada.
Atualize todas as estatísticas com sp_updatestats
Para obter informações sobre como atualizar estatísticas para todas as tabelas internas e definidas pelo usuário no banco de dados, consulte o procedimento armazenado sp_updatestats. Por exemplo, o comando a seguir chama sp_updatestats para atualizar todas as estatísticas do banco de dados.
EXECUTE sp_updatestats;
Gestão automática de índices e estatísticas
Use soluções como Adaptive Index Defrag para gerenciar automaticamente a desfragmentação de índice e atualizações de estatísticas para um ou mais bancos de dados. Este procedimento escolhe automaticamente se deseja reconstruir ou reorganizar um índice de acordo com seu nível de fragmentação, entre outros parâmetros, e atualizar as estatísticas com um limite linear.
Determinar a última atualização de estatísticas
Para determinar quando as estatísticas foram atualizadas pela última vez, use a função STATS_DATE.
PDW / Azure Synapse Analytics
A sintaxe a seguir não é suportada pelo Analytics Platform System (PDW) / Azure Synapse Analytics:
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
Requer ALTER permissão na tabela ou exibição.
Examples
A. Atualizar todas as estatísticas de uma tabela
O exemplo a seguir atualiza todas as estatísticas na tabela SalesOrderDetail.
USE AdventureWorks2022;
GO
UPDATE STATISTICS Sales.SalesOrderDetail;
GO
B. Atualizar as estatísticas de um índice
O exemplo a seguir atualiza as estatísticas para o índice de AK_SalesOrderDetail_rowguid da tabela SalesOrderDetail.
USE AdventureWorks2022;
GO
UPDATE STATISTICS Sales.SalesOrderDetail (AK_SalesOrderDetail_rowguid);
GO
C. Atualizar estatísticas usando 50% de amostragem
O exemplo a seguir cria e atualiza as estatísticas para as colunas Name e ProductNumber na tabela Product.
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. Atualizar estatísticas usando FULLSCAN e NORECOMPUTE
O exemplo a seguir atualiza as estatísticas de Products na tabela Product, força uma verificação completa de todas as linhas na tabela Product e desativa as estatísticas automáticas para as estatísticas Products.
USE AdventureWorks2022;
GO
UPDATE STATISTICS Production.Product (Products)
WITH FULLSCAN, NORECOMPUTE;
GO
Exemplos: Azure Synapse Analytics and Analytics Platform System (PDW)
E. Atualizar estatísticas numa tabela
O exemplo a seguir atualiza as estatísticas de CustomerStats1 na tabela Customer.
UPDATE STATISTICS Customer (CustomerStats1);
F. Atualizar estatísticas usando uma verificação completa
O exemplo a seguir atualiza as estatísticas de CustomerStats1, com base na verificação de todas as linhas da tabela Customer.
UPDATE STATISTICS Customer (CustomerStats1) WITH FULLSCAN;
G. Atualizar todas as estatísticas de uma tabela
O exemplo a seguir atualiza todas as estatísticas na tabela Customer.
UPDATE STATISTICS Customer;
H. Use CREATE STATISTICS com AUTO_DROP
Para usar estatísticas de queda automática, basta adicionar o seguinte à cláusula "WITH" de estatísticas criadas ou atualizadas.
UPDATE STATISTICS Customer (CustomerStats1) WITH AUTO_DROP = ON;
Conteúdo relacionado
- Statistics
- Estatísticas no Fabric Data Warehouse
- BASE DE DADOS ALTER (Transact-SQL)
- sys.dm_db_stats_properties (Transact-SQL)
- sys.dm_db_stats_histogram (Transact-SQL)
- CRIAR ESTATÍSTICAS (Transact-SQL)
- DBCC SHOW_STATISTICS (Transact-SQL)
- ESTATÍSTICAS DE QUEDA (Transact-SQL)
- sp_autostats (Transact-SQL)
- sp_updatestats (Transact-SQL)
- STATS_DATE (Transact-SQL)