Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Banco de Dados SQL do Azure
Instância Gerenciada de SQL do Azure
Azure Synapse Analytics
Analytics Platform System (PDW)
Ponto de extremidade de análise de SQL no Microsoft Fabric
Warehouse no Microsoft Fabric
Banco de Dados SQL no Microsoft Fabric
Atualiza estatísticas de otimização de consulta em uma tabela ou exibição indexada. Por padrão, o otimizador de consulta já atualiza estatísticas conforme necessário para melhorar o plano de consulta, em alguns casos, é possível melhorar o desempenho de consulta usando UPDATE STATISTICS
ou o procedimento armazenado sp_updatestats para atualizar estatísticas com mais frequência do que as atualizações padrão.
A atualização de estatísticas assegura que as consultas sejam compiladas com estatísticas atualizadas. Atualizar estatísticas por meio de qualquer processo pode fazer com que os planos de consulta recompilem automaticamente. É recomendável não atualizar estatísticas com muita frequência porque existem vantagens e desvantagens de desempenho entre o aprimoramento dos planos de consulta e o tempo necessário para recompilar consultas. As compensações específicas dependem do seu aplicativo.
UPDATE STATISTICS
pode usar tempdb
para classificar o exemplo de linhas para compilação de estatísticas.
Observação
Para obter mais informações sobre estatísticas no Microsoft Fabric, consulte Estatísticas no armazenamento de dados do Fabric.
Convenções de sintaxe de Transact-SQL
Sintaxe para SQL Server e 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 do Azure Synapse Analytics e do Parallel Data Warehouse.
UPDATE STATISTICS [ schema_name . ] table_name
[ ( { statistics_name | index_name } ) ]
[ WITH
{
FULLSCAN
| SAMPLE number PERCENT
| RESAMPLE
}
]
[;]
Sintaxe para o Microsoft Fabric.
UPDATE STATISTICS [ schema_name . ] table_name
[ ( { statistics_name } ) ]
[ WITH
{
FULLSCAN
| SAMPLE number PERCENT
}
]
[;]
Observação
Não há suporte a essa sintaxe para o pool de SQL sem servidor no Azure Synapse Analytics.
O nome da tabela ou exibição indexada que contém o objeto de estatísticas.
O nome do índice para atualizar as estatísticas 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 da 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á ativada e estatísticas criadas para índices.
Para obter mais informações sobre AUTO_CREATE_STATISTICS
as opções ALTER DATABASE SET. Para exibir todos os índices de uma tabela ou exibição, use sp_helpindex.
Calcule as estatísticas verificando todas as linhas da tabela ou da exibição indexada.
FULLSCAN
e SAMPLE 100 PERCENT
tenha os mesmos resultados.
FULLSCAN
não pode ser usado com a opção SAMPLE
.
Especifica a porcentagem aproximada ou o número de linhas da tabela ou da exibição indexada para uso do otimizador de consulta ao atualizar as estatísticas. Para PERCENT
, o número pode ser de 0 a 100 e, para ROWS
, o número pode ser de 0 para o número total de linhas. A porcentagem real ou o número de linhas que o otimizador de consulta usa como exemplo talvez não corresponda à porcentagem ou ao número especificado. Por exemplo, o otimizador de consulta verifica todas as linhas de uma página de dados.
SAMPLE
é útil para casos especiais em que o plano de consulta, com base na amostragem padrão, não é ideal. Na maioria das situações, não é necessário especificar SAMPLE
porque o otimizador de consulta usa amostragem e determina o tamanho de exemplo estatisticamente significativo por padrão, conforme necessário para criar planos de consulta de alta qualidade.
Observação
No SQL Server 2016 (13.x)SQL Server 2016 (13.x)SQL Server 2016 (13.x)SQL Server 2016 (13.x)SQL Server 2016 (13.x)SQL Server 2016 (13.x)SQL Server 2016 (13.x)SQL Server 2016 (13.x)SQL Server 2016 (13.x)SQL Server 2016 O otimizador de consulta usará estatísticas de exemplo paralelas sempre que um tamanho de 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 de estatísticas manterá a execução paralela se qualificado.
SAMPLE
não pode ser usado com a opção FULLSCAN
. Quando nem especificado SAMPLE
FULLSCAN
, o otimizador de consulta usa dados amostrados e calcula o tamanho da amostra por padrão.
É recomendável não especificar 0 PERCENT
ou 0 ROWS
. Quando 0 PERCENT
ou 0 ROWS
especificado, o objeto de estatísticas é atualizado, mas não contém dados de estatísticas.
Para a maioria das cargas de trabalho, a verificação completa não é necessária e a amostragem padrão é adequada. No entanto, determinadas cargas de trabalho que são sensíveis a distribuições de dados amplamente variadas podem exigir um tamanho de exemplo maior ou até mesmo uma verificação completa. Embora as estimativas possam se tornar mais precisas com uma verificação completa do que uma verificação amostrada, planos complexos podem não se beneficiar substancialmente.
Para obter mais informações, consulte Componentes e conceitos de estatísticas.
Atualiza cada estatística usando sua taxa de amostragem mais recente.
Usar RESAMPLE
pode resultar em uma verificação de tabela completa. Por exemplo, estatísticas de índices usam um exame de tabela completa para sua taxa de amostragem. Quando nenhuma das opções de exemplo (SAMPLE
, FULLSCAN
, RESAMPLE
) são especificadas, o otimizador de consulta amostra os dados e calcula o tamanho da amostra por padrão.
No Warehouse no Microsoft Fabric, RESAMPLE
não há suporte.
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 de SQL do Azure
Quando ON
, as estatísticas manterão o percentual de amostragem definido para atualizações subsequentes que não especificam explicitamente uma porcentagem de amostragem. Quando OFF
, o percentual de amostragem de estatísticas será redefinido para amostragem padrão em atualizações subsequentes que não especificam explicitamente uma porcentagem de amostragem. O padrão é OFF
.
DBCC SHOW_STATISTICS e sys.dm_db_stats_properties expõem o valor de percentual de amostra persistente para a estatística selecionada.
Se AUTO_UPDATE_STATISTICS
for executado, ele usará o percentual de amostragem persistente, se disponível, ou usará o percentual de amostragem padrão, caso contrário.
RESAMPLE
o comportamento não é afetado por essa opção.
Se a tabela for truncada, todas as estatísticas criadas no heap ou árvore B (HoBT) truncado voltarão a usar a porcentagem de amostragem padrão. Da mesma forma, se as estatísticas forem atualizadas em um objeto sem linhas, ela será revertida para o uso da porcentagem de amostragem padrão mesmo que PERSIST_SAMPLE_PERCENT
tenha sido configurada anteriormente.
Observação
No SQL Server, ao recriar um índice com PERSIST_SAMPLE_PERCENT
o qual as estatísticas foram atualizadas anteriormente, a porcentagem de amostra persistente é redefinida de volta para o 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 ao recompilar um índice.
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 ON PARTITIONS
serem recomputadas e mescladas para criar as estatísticas globais.
WITH RESAMPLE
é necessário porque as estatísticas de partição criadas com diferentes taxas de exemplo não podem ser mescladas.
Atualize todas as estatísticas existentes, as estatísticas criadas em uma ou mais colunas ou as 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 na exibição indexada.
Desabilite a opção de atualização automática de estatísticas para AUTO_UPDATE_STATISTICS
as estatísticas especificadas. Se essa opção for especificada, o otimizador de consulta concluirá essa atualização de estatísticas e desabilitará atualizações futuras.
Para reabilitar o comportamento da opção AUTO_UPDATE_STATISTICS
, execute UPDATE STATISTICS
novamente sem a opção NORECOMPUTE
ou execute sp_autostats
.
Aviso
O uso dessa opção pode produzir planos de consulta de qualidade inferior. É recomendável usar essa opção moderadamente e somente por um administrador de sistema qualificado.
Para obter mais informações sobre a opção AUTO_STATISTICS_UPDATE
, consulte Opções ALTER DATABASE SET.
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 OFF
a árvore de estatísticas é descartada e o SQL Server computa novamente as estatísticas. O padrão é OFF
.
Se as estatísticas por partição não tiverem suporte, um erro será gerado. As estatísticas incrementais não têm suporte para os seguintes tipos de estatísticas:
- Estatísticas criadas com os índices que não estejam alinhados por partição com a tabela base.
- Estatísticas criadas em bancos de dados secundários legíveis AlwaysOn.
- Estatísticas criadas em bancos de dados somente leitura.
- Estatísticas criadas em índices filtrados.
- Estatísticas criadas em exibições.
- Estatísticas criadas em tabelas internas.
- Estatísticas criadas com índices espaciais ou índices XML.
Aplica-se ao: SQL Server (Começando pelo SQL Server 2016 (13.x) SP2 e SQL Server 2017 (14.x) CU3).
Substitui a opção max degree of parallelism
de configuração durante a operação de estatística. Para obter mais informações, veja Configurar a opção max degree of parallelism de configuração de servidor. 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:
Suprime a geração de plano paralelo.
Restringe o número máximo de processadores usados em uma operação de estatística paralela ao número especificado ou menos com base na carga de trabalho atual do sistema.
Usa o número real de processadores, ou menos, com base na carga de trabalho atual do sistema.
Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.
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 do cliente, esses objetos de estatísticas poderão bloquear ou interferir nas alterações de esquema que o cliente pode desejar.
(A partir do SQL Server 2022 (16.x))| Esse recurso permite a criação de objetos de estatísticas em um modo de modo que uma alteração de esquema não ser bloqueada pelas estatísticas, mas, em vez disso, as estatísticas serão descartadas. Dessa forma, as estatísticas removidas automaticamente se comportam como estatísticas criadas automaticamente.
Observação
Tentar definir ou desabilitar a propriedade Auto_Drop 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 de estatísticas for atualizado (manual ou automaticamente). No entanto, as estatísticas criadas automaticamente se comportam como estatísticas de remoção automática.
Para obter mais informações sobre quando usar UPDATE STATISTICS
, consulte Quando atualizar estatísticas.
Não há suporte para a atualização de estatística em tabelas externas. Para atualizar as estatísticas em uma tabela externa, remova 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 cannot be updated on a columnstore index. UPDATE STATISTICS is valid only when used with the STATS_STREAM option.
para obter mais informações, consulte as 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
MAXDOP
não é compatível com as opçõesSTATS_STREAM
,ROWCOUNT
ePAGECOUNT
.A opção
MAXDOP
é limitada pela configuraçãoMAX_DOP
de grupo de carga de trabalho de Resource Governor, se usada.
Para obter informações sobre como atualizar estatísticas de todas as tabelas definidas pelo usuário e internas no banco de dados, confira 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;
Use soluções como o Desfragmento de Índice Adaptável para gerenciar automaticamente as atualizações de desfragmentação de índice e estatísticas para um ou mais bancos de dados. Esse procedimento escolhe automaticamente se deseja recompilar ou reorganizar um índice de acordo com seu nível de fragmentação, entre outros parâmetros, e atualizar estatísticas com um limite linear.
Para determinar quando as estatísticas foram atualizadas pela última vez, use a função STATS_DATE .
A sintaxe a seguir não é compatível com o 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;
Requer a permissão ALTER
na tabela ou exibição.
O exemplo a seguir atualiza todas as estatísticas na tabela SalesOrderDetail
.
USE AdventureWorks2022;
GO
UPDATE STATISTICS Sales.SalesOrderDetail;
GO
O exemplo a seguir atualiza as estatísticas do índice AK_SalesOrderDetail_rowguid
da tabela SalesOrderDetail
.
USE AdventureWorks2022;
GO
UPDATE STATISTICS Sales.SalesOrderDetail (AK_SalesOrderDetail_rowguid);
GO
O exemplo a seguir cria e atualiza as estatísticas das 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;
O exemplo a seguir atualiza as estatísticas Products
na tabela Product
força um exame completo de todas as linhas na tabela Product
e desativa a atualização automática das estatísticas de Products
.
USE AdventureWorks2022;
GO
UPDATE STATISTICS Production.Product (Products)
WITH FULLSCAN, NORECOMPUTE;
GO
O exemplo a seguir atualiza as estatísticas de CustomerStats1
na tabela Customer
.
UPDATE STATISTICS Customer (CustomerStats1);
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;
O exemplo a seguir atualiza todas as estatísticas na tabela Customer
.
UPDATE STATISTICS Customer;
Para usar as estatísticas de remoção automática, basta adicionar o código abaixo à cláusula "WITH" de criação ou atualização de estatísticas.
UPDATE STATISTICS Customer (CustomerStats1) WITH AUTO_DROP = ON;
- Estatísticas
- Estatísticas no Microsoft Fabric
- ALTER DATABASE (Transact-SQL)
- sys.dm_db_stats_properties (Transact-SQL)
- sys.dm_db_stats_histogram (Transact-SQL)
- CREATE STATISTICS (Transact-SQL)
- DBCC SHOW_STATISTICS (Transact-SQL)
- DROP STATISTICS (Transact-SQL)
- sp_autostats (Transact-SQL)
- sp_updatestats (Transact-SQL)
- STATS_DATE (Transact-SQL)