Informações sobre o desempenho consulta numa base de dados do Access

Traduções de Artigos Traduções de Artigos
Artigo: 209126 - Ver produtos para os quais este artigo se aplica.
Moderado: Requer básica macros, codificação e interoperabilidade competências.

Este artigo aplica-se apenas a uma base de dados do Microsoft Access (.mdb).

Para obter uma versão Access 97 deste artigo, consulte 112112.
Expandir tudo | Reduzir tudo

Nesta página

INTRODUÇÃO

Este artigo explica como optimizar o desempenho das consultas no Microsoft Access 2000, no Microsoft Access 2002 e no Microsoft Office Access 2003. São incluídos os seguintes tópicos:
  • Optimizador de consulta para o motor de base de dados do Microsoft Jet
  • Tempo de consulta
  • Analisar desempenho
  • Sugestões para melhorar o desempenho das consultas
Este artigo pressupõe que a base de dados tem tabelas locais em vez de tabelas ligadas (ou anexadas). Se as tabelas estão ligadas, esta informação ainda é aplicada. No entanto, existem questões adicionais que afectam a consulta de desempenho com tabelas ligadas. Para obter mais informações sobre como melhorar o desempenho com tabelas ligadas, pode pesquisar a base de dados de conhecimento utilizando a seguinte cadeia:
ODBC e optimizar e tabelas

Mais Informação

Optimizador de consulta para o motor de base de dados do Microsoft Jet

O motor de base de dados Jet contém vários componentes, mas o componente mais importante para consultas (e mais complexo) é o optimizador. O Optimizador é custo baseado. Isto significa que o optimizador atribui um custo de tempo para cada tarefa de consulta e, em seguida, escolhe a lista de tarefas a executar menos dispendiosa gera o conjunto de resultado pretendido. Quanto mais tempo uma tarefa leva para efectuar essa tarefa mais dispendiosa é.

Para decidir que estratégia de consulta para utilizar, o Optimizador utiliza estatísticas. Os seguintes factores são algumas dos factores que estas estatísticas baseiam-se:
  • O número de registos numa tabela
  • Número de páginas de dados numa tabela
  • A localização da tabela
  • Se existirem índices
  • Como exclusivo os índices são
Com base nestas estatísticas, o Optimizador selecciona, em seguida, a estratégia melhor consulta interna para lidar com uma determinada consulta.

As estatísticas são actualizadas sempre que uma consulta é compilada. Uma consulta é sinalizada para compilar quando guardar as alterações para a consulta (ou respectivas tabelas subjacentes) e quando a base de dados for compactada. Se uma consulta estiver sinalizada para compilar, a compilação e a actualização das estatísticas ocorre da próxima vez que a consulta é executada. Compilar normalmente demora a partir de um segundo a quatro segundos.

Se adicionar um número significativo de registos à base de dados, tem de abrir e, em seguida, guardar as consultas para recompilar as consultas. Por exemplo, se criar e, em seguida, testar uma consulta utilizando um pequeno conjunto de dados de exemplo, tem re-compile a consulta depois de registos adicionais são adicionados à base de dados. Quando o fizer, pretende certificar de que consulta um óptimo desempenho é conseguido quando a aplicação está em utilização.

Nota Não é possível visualizar esquemas de optimização motor do Jet base de dados e não é possível especificar a optimizar uma consulta. No entanto, pode utilizar o Documentador de base de dados para determinar se se existirem índices e um índice exclusivo como está.

Para obter mais informações sobre o problema poderá ocorrer quando utilizar o Documentador de base de dados no Access 2000, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
207782ACC2000: Erro utilizando a base de dados Documentador se objectos abertos

Tempo de consulta

Existem duas medidas de tempo significativas para uma consulta seleccionar:
  • Tempo a apresentar o primeiro ecrã de dados
  • Tempo a obter o último registo
Se uma consulta devolver apenas um ecrã de dados, estes tempo duas medidas são iguais. Se uma consulta devolver muitos registos, estas medidas de tempo podem ser muito diferentes.

Se as duas medidas forem os mesmos quando visualiza uma consulta seleccionar na vista de folha de dados, visualizará um ecrã de dados e um número total de registos devolvidos pela consulta, tal como "Registo 1 de N." Se destina-se mais rapidamente o motor de base de dados Jet apresentar o primeiro ecrã de dados do que concluir a consulta e, em seguida, obter o último registo, visualizará um ecrã de dados, mas não N em "Registo 1 de N. O valor de N estiver em branco até que a consulta estiver concluída ou até que desloque-se para o último registo.

Este comportamento é o resultado do motor de base de dados Jet seleccionando uma de duas estratégias de desempenho:
  • Concluir a consulta e, em seguida, apresentar dados
  • Apresentar dados e, em seguida, concluir a consulta
Não pode controlar a estratégia que é utilizada. O motor de base de dados Jet selecciona a estratégia que é mais eficaz.

Analisar desempenho

Se estiver a utilizar o Microsoft Access 7.0, Access 97, Access 2000, Access 2002 ou Access 2003, pode utilizar o analisador de desempenho para analisar as consultas na base de dados. Uma vez que a análise de desempenho de consulta está fortemente associada ao motor de base de dados Jet, o analisador de desempenho sugere adicionar índices apenas quando os índices, na realidade, serão utilizados pelo motor de base de dados Jet para optimizar a consulta. Isto significa que o analisador de desempenho pode fornecer sugestões de desempenho que são mais específicos para a base de dados do que as sugestões gerais listadas abaixo na secção "Sugestões para melhorar o desempenho das consultas".

Para executar o analisador de desempenho no Access 7.0, no Access 97, no Access 2000, no Access 2002 ou no Access 2003, siga estes passos:

No menu Ferramentas , clique em Analisar e, em seguida, clique em desempenho .

Sugestões para melhorar o desempenho das consultas

Para melhorar o desempenho das consultas, experimente estas sugestões:
  • Compactar a base de dados

    Quando compacta a base de dados pode acelerar as consultas. Quando compacta a base de dados, os registos da tabela são reorganizados para que os registos residam em páginas adjacentes da base de dados que são ordenadas pela chave primária da tabela. Isto melhora o desempenho das pesquisas sequenciais dos registos numa tabela, porque apenas o número mínimo de páginas de base de dados agora tem de ser lidos para obter os registos que pretende. Depois de compactar a base de dados, execute cada consulta para compilar a consulta para que cada consulta vai agora as estatísticas da tabela actualizada.
  • Indexar um campo

    Qualquer campo que é utilizado para definir critérios para os campos de consulta e os campos de índice em ambos os lados de uma associação de índice. Ou, criar uma relação entre estes campos. Quando cria uma relação com a integridade referencial aplicada, o motor de base de dados Jet cria um índice na chave externa se não já existir. Caso contrário, o motor de base de dados Jet utiliza o índice existente.

    Nota O motor de base de dados Jet optimiza automaticamente uma consulta que associa uma tabela do Access no disco rígido e uma tabela de servidor ODBC se o Access tabela for pequena e se os campos associados são indexados. Neste caso, o Access melhora o desempenho, pedindo apenas os registos necessários a partir do servidor. Certifique-se de que tabelas que aderir de origens diferentes estão indexadas nos campos de associação.
  • Seleccione o mais pequeno tipo de dados é apropriado

    Quando define um campo numa tabela, seleccione o mais pequeno tipo de dados apropriado para os dados no campo. Além disso, certifique-se que campos que pretende utilizar em associações tem o mesmo tipos de dados de tipos de dados compatíveis, tais como numeração automática e número (se a propriedade TamanhoDoCampo estiver definida como Número inteiro longo ).
  • Adicione apenas os campos tem de ter

    Quando cria uma consulta, adicione apenas os campos que necessita. Nos campos que são utilizados para definir critérios, clique para desmarcar a caixa de verificação Mostrar se não pretender apresentar esses campos.
  • Guarde a instrução SQL como uma consulta

    Se a propriedade OrigemDosRegistos para um formulário ou relatório estiver definida para uma instrução SQL, guarde a instrução SQL como uma consulta e, em seguida, defina a propriedade OrigemDosRegistos para o nome da consulta.
  • Evitar campos calculados

    Evite campos calculados em subconsultas. Se adicionar uma consulta que contenha um campo calculado a outra consulta, a expressão no campo calculado pode diminuir o desempenho da consulta de nível superior. No exemplo seguinte, a consulta Q1 é utilizada como entrada para a consulta Q2:
    Q1: SELECT IIF([MyColumn]="Yes","Order Confirmed","Order Not Confirmed") AS X FROM MinhaTabela;
    P2: SELECT * FROM Q1 WHERE X = "Encomenda confirmada";
    Porque não pode ser optimizada a expressão IIF Q1, Q2 também não pode ser optimizada. Se uma expressão que não pode ser optimizada estiver aninhada uma subconsulta, tudo a consulta não pode ser optimizada.

    Uma forma alternativa para construir a consulta é o seguinte:
    Q1: SELECT * FROM MinhaTabela WHERE AMinhaColuna = "Sim";
    Se as expressões forem necessárias na saída, tente colocar as expressões de um controlo num formulário ou relatório. Por exemplo, pode alterar a consulta anterior para uma consulta parametrizada que pede para o valor de AminhaColuna e, em seguida, basear um formulário ou relatório na consulta. No formulário ou no relatório, em seguida, é possível adicionar um controlo calculado que apresenta "Olá" ou "Final", dependendo do valor em AminhaColuna.

    Construa a consulta da seguinte forma:
    PARAMETERS [para visualizar encomendas confirmadas, introduza ' Sim '. Para ver encomendas não confirmadas, introduza não.] Texto;
    SELECCIONE *
    FROM MinhaTabela
    WHERE AMinhaColuna = [para visualizar encomendas confirmadas, introduza ' Sim '. Para ver encomendas não confirmadas, introduza não.];
    No controlo calculado do formulário ou relatório, escreva:
    = IIF([MyColumn]="Yes","Order Confirmed","Order Not Confirmed")
  • Especificar Agrupar por

    Quando agrupar registos pelos valores num campo associado, especificar Agrupar por para o campo na mesma tabela como o campo que são total (calcular um agregado no). Por exemplo, na base de dados Adamastor.mdb exemplo, se criar uma consulta que calcula o campo Quantidade da tabela Detalhes da encomenda e, em seguida, grupos por CódigoDaEncomenda, pode especificar Agrupar por para o campo CódigoDaEncomenda os detalhes da encomenda tabela. Se especificar Agrupar por para o campo CódigoDaEncomenda da tabela Encomendas, Access deve associar todos os registos pela primeira vez e execute agregado, em vez de executar a função de agregação e, em seguida, associar apenas os campos necessários.

    Para maior velocidade, utilize Agrupar por campos menor possível. Em alternativa, utilize a função primeiro se for possível.

    Se uma consulta de totais incluir uma associação, considere o agrupamento dos registos numa consulta e, em seguida, adição desta consulta a uma consulta separada que efectua a associação. Quando o fizer, o desempenho pode ser melhorado com algumas consultas.
  • Evite critérios de consulta restritivos

    Evite critérios de consulta restritivos campos calculados e campos não indexados se possível. Utilize expressões de critérios pode optimizar.
  • Testar o desempenho das consultas num campo que é utilizado numa associação entre tabelas

    Se utilizar critérios para restringir os valores de um campo utilizado numa associação entre tabelas com uma relação um-para-muitos, teste se a consulta é executada mais rapidamente com os critérios colocados no lado "um" ou no lado "muitos" da associação. Em algumas consultas, se poderá aperceber de desempenho mais rápido adicionando os critérios ao campo no lado "um" da associação em vez de no lado "muitos" da associação.
  • Índice de campos de ordenação

    Indexe os campos que utilizar para ordenar.
  • Utilizar consultas criar tabela para criar tabelas

    Se os dados raramente forem alterados, utilize consultas criar tabela para criar tabelas de resultados da consulta. Utilize as tabelas resultantes em vez de consultas como base para os formulários, relatórios ou as consultas. Certifique-se que adiciona índices de acordo com as directrizes que leu neste artigo.
  • Evite utilizar funções de agregação de domínio

    Evite utilizar funções de agregação de domínio, tais como a função DPesquisar para aceder a dados de uma tabela que não está na consulta. Funções de agregação de domínio são específicas do Access e isto significa que o Jet motor de base de dados não é possível optimizar as consultas que utilizam funções de agregação de domínio. Em vez disso, adicionar a consulta à tabela de que a função foi aceder ou criar uma subconsulta.
  • Utilizar cabeçalhos de coluna fixa

    Se estiver a criar uma consulta de referência cruzada, utilize cabeçalhos de coluna fixos sempre que possível.
  • Utilizar operadores

    Utilize o operador Between... And , o operador in e = operador em campos indexados.
  • Optimizar o desempenho do servidor

    Para consultas de actualização em massa origens de dados ODBC, optimize o desempenho no servidor definindo a propriedade FalhaEmErro para Sim.

Referências

Para obter mais informações sobre como optimizar o desempenho no Microsoft Access 2000, clique em Ajuda do Microsoft Access no menu de Ajuda escreva optimizar o desempenho no Assistente do Office ou no Assistente de respostas e, em seguida, clique em Procurar para visualizar o tópico.
Para obter mais informações sobre como optimizar o desempenho no Microsoft Access 2002, clique em Ajuda do Microsoft Access no menu Ajuda , tipo melhorar o desempenho de um acesso da base de dados no Assistente do Office ou no Assistente de respostas e, em seguida, clique em Procurar para visualizar o tópico.

Para obter mais informações sobre como melhorar o desempenho no Access 2003, clique em Ajuda do Microsoft Office Access no menu Ajuda , tipo melhorar o desempenho de uma base de dados do Access em Procurar caixa no painel de assistência e, em seguida, clique em Iniciar a procura para visualizar o tópico.

Para obter mais informações sobre como utilizar índices no Access 2000, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
209564ACC2000: Índices compostos devem restringir o primeiro campo indexado

Propriedades

Artigo: 209126 - Última revisão: 28 de novembro de 2007 - Revisão: 2.5
A informação contida neste artigo aplica-se a:
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
  • Microsoft Access 2000 Standard Edition
Palavras-chave: 
kbmt kbquery kbhowto kbperformance kbinfo kbusage KB209126 KbMtpt
Tradução automática
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.
Clique aqui para ver a versão em Inglês deste artigo: 209126

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com