CORRECÇÃO: Suboptimais plano de execução num UPDATE indirecto para uma vista indexada

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática… erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.

286234
Este artigo foi arquivado. Este artigo é oferecido "tal como está" e deixará de ser actualizado.
N.º DE BUGS: 236137 (SHILOH_BUGS)
Sintomas
Uma actualização para uma tabela subjacente de uma vista indexada pode resultar num plano suboptimal quando na vista indexada contém funções de agregação.
Causa
Linha incorrecta calcula o resultado de uma verificação do índice em vez de um índice de procura ao calcular informações agregadas.
Resolução
Para resolver este problema, obtenha o service pack mais recente do SQL Server 2000. Para obter informações adicionais, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
290211INF: How to Obtain the Latest SQL Server 2000 Service Pack
Como contornar
Evite utilizar funções de agregação numa vista indexada.
Ponto Da Situação
A Microsoft confirmou que este é um problema no SQL Server 2000. Este problema foi corrigido pela primeira vez no SQL Server 2000 Service Pack 1.
Mais Informação
Execute o seguinte código para ver o problema. Tenha em atenção que o passo "cálculos escalar" está a efectuar uma procura de índice.
use tempdbgoIF EXISTS(SELECT * FROM information_schema.views where table_name = 'v1')  drop view v1IF EXISTS(SELECT * FROM information_schema.tables where table_name = 't1')  drop table t1gocreate table t1 (a int, b bigint NOT NULL)set nocount ondeclare @i intset @i=1while (@i<100000)begin  insert into t1 values (@i,0)  set @i=@i+1endgoSET NUMERIC_ROUNDABORT OFF SET ANSI_PADDING,ANSI_WARNINGS,CONCAT_NULL_YIELDS_NULL,ARITHABORT,QUOTED_IDENTIFIER,ANSI_NULLS ONGOcreate view v1 (a,b,c) with schemabinding as select a, sum(b), count_big(*) from dbo.t1 group by a gocreate unique clustered index i1 on v1(a)goset statistics profile oninsert into t1 values (1,1)set statistics profile offgo				
Optimizador de plano de consultas de optimização de baixa velocidade rápida desempenho IV

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 286234 - Última Revisão: 01/16/2015 21:28:13 - Revisão: 3.2

  • Microsoft SQL Server 2000 Standard Edition
  • kbnosurvey kbarchive kbmt kbbug kbfix kbsqlserv2000sp1fix KB286234 KbMtpt
Esta informação foi útil?