Você está offline; aguardando reconexão

Informações sobre o desempenho da consulta em um banco de dados do Access

O suporte para o Office 2003 terminou

A Microsoft terminou o suporte para o Office 2003 em 8 de abril de 2014. Esta alteração afetou as suas atualizações de software e opções de segurança. Saiba o que isto significa para você e como permanecer protegido.

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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 209126
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Moderado: Requer básica de macro, codificação e interoperabilidade habilidades.

Este artigo se aplica somente a um banco de dados do Microsoft Access (.mdb).

Para obter uma versão Access 97 deste artigo, consulte 112112.
INTRODUÇÃO
Este artigo descreve como otimizar o desempenho da consulta no Microsoft Access 2000, no Microsoft Access 2002 e no Microsoft Office Access 2003. Os tópicos a seguir estão incluídos:
  • Otimizador de consulta para o mecanismo de banco de dados Microsoft Jet
  • Tempo de consulta
  • Analisar desempenho
  • Dicas para melhorar o desempenho de consulta
Este artigo presume que o banco de dados possui tabelas locais em vez de tabelas vinculadas (ou anexadas). Se as tabelas são vinculadas, essas informações ainda se aplicará. No entanto, há outros problemas que afetam a consulta de desempenho com tabelas vinculadas. Para obter mais informações sobre como melhorar o desempenho com tabelas vinculadas, você pode pesquisar base de dados de Conhecimento, usando a seqüência de caracteres a seguir:
ODBC e otimizar e tabelas
Mais Informações

Otimizador de consulta para o mecanismo de banco de dados Microsoft Jet

O mecanismo de banco de dados Jet contém vários componentes, mas o componente mais importante para consultas (e mais complexa) é o otimizador. O Otimizador é custo baseado em. Isso significa que o Optimizer atribui um custo de hora para cada tarefa de consulta e, em seguida, escolhe menos cara lista de tarefas para executar que gera o conjunto de resultado desejado. Quanto mais tempo uma tarefa leva para executar, é a tarefa o mais caro.

Para decidir que estratégia de consulta para usar, o otimizador usa estatísticas. Os fatores a seguir são alguns dos fatores que essas estatísticas são baseadas em:
  • O número de registros em uma tabela
  • O número de páginas de dados em uma tabela
  • O local da tabela
  • Se os índices estão presentes
  • Os índices são como exclusivo
Com base nessas estatísticas, o otimizador, em seguida, seleciona a estratégia melhor a consulta interna para lidar com uma consulta específica.

As estatísticas são atualizadas sempre que uma consulta é compilada. Uma consulta é sinalizada para compilação quando você salva as alterações para a consulta (ou suas tabelas base) e quando o banco de dados é compactado. Se uma consulta está sinalizada para compilação, a compilação e a atualização das estatísticas ocorrerá na próxima vez em que a consulta é executada. Compilando normalmente leva de um segundo a quatro segundos.

Se você adicionar um número significativo de registros para o banco de dados, abra e salve suas consultas para recompilar as consultas. Por exemplo, se você cria e testar uma consulta usando um pequeno conjunto de dados de exemplo, você deve re-compile a consulta após registros adicionais serem adicionados ao banco de dados. Quando você fizer isso, você quer Certifique-se de que o desempenho da consulta ideal é obtido quando seu aplicativo estiver em uso.

Observação Não é possível exibir esquemas de otimização de mecanismo de banco de dados Jet, e você não pode especificar como otimizar uma consulta. No entanto, você pode usar o Documentador do banco de dados para determinar se os índices estão presentes e é um índice como exclusivo.

Para obter mais informações sobre o problema pode ocorrer quando você usa o Documentador do banco de dados no Access 2000, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
207782ACC2000: Erro usando banco de dados Documentador se os objetos estiverem abertos

Tempo de consulta

Há duas medições de tempo significativo para uma consulta seleção:
  • Tempo para exibir a primeira tela de dados
  • Tempo para obter o último registro
Se uma consulta retorna somente uma tela de dados, essas duas vez medidas são os mesmos. Se uma consulta retorna muitos registros, essas medidas de tempo podem ser muito diferentes.

Se as duas medidas forem iguais, quando você exibir uma consulta seleção no modo folha de dados, você verá uma tela de dados e um número total de registros que são retornados pela consulta, tal como "Registro 1 de N. Se ele for mais rápida para o mecanismo de banco de dados Jet exibir a primeira tela de dados do que para concluir a consulta e, em seguida, recuperar o último registro, você verá uma tela de dados mas não N em "Registro 1 de N. O valor de N é em branco até que a consulta é concluída ou até que você rolar para baixo para o último registro.

Esse comportamento é o resultado do mecanismo de banco de dados do Jet selecionando uma das duas estratégias de desempenho:
  • Concluir a consulta e, em seguida, exibir dados
  • Exibir dados e preencha a consulta
Você não pode controlar a estratégia que é usada. O mecanismo de banco de dados Jet seleciona a estratégia é mais eficiente.

Analisar desempenho

Se você estiver usando o Microsoft Access 7.0, Access 97, Access 2000, Access 2002 ou Access 2003, você pode usar o analisador de desempenho para analisar consultas no seu banco de dados. Porque a análise de desempenho de consulta é rigorosamente associada ao mecanismo de banco de dados do Jet, o analisador de desempenho sugere adicionar índices apenas quando os índices, na verdade, serão usados pelo mecanismo de banco de dados Jet para otimizar a consulta. Isso significa que o analisador de desempenho pode fornecer dicas de desempenho que são mais específicas para seu banco de dados do que as sugestões gerais listadas abaixo na seção "Dicas para melhorar o desempenho da consulta".

Para executar o analisador de desempenho no Access 7.0, no Access 97, no Access 2000, no Access 2002 ou no Access 2003, execute estas etapas:

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

Dicas para melhorar o desempenho de consulta

Para melhorar o desempenho da consulta, tente estas dicas:
  • Compactar o banco de dados

    Quando você compacta o banco de dados você pode acelerar consultas. Quando você compacta o banco de dados, os registros da tabela são reorganizados para que os registros residam em páginas adjacentes do banco de dados que são ordenadas pela chave primária da tabela. Isso melhora o desempenho das verificações seqüenciais de registros na tabela porque somente o número mínimo de páginas do banco de dados agora tem de ser lido para recuperar os registros que você deseja. Após você compacta o banco de dados, execute cada consulta para compilar a consulta de modo que cada consulta agora terá as estatísticas atualizadas da tabela.
  • Indexar um campo

    Indexe qualquer campo que é usado para definir critérios para os campos da consulta e campos de índice em ambos os lados de uma associação. Ou então, criar uma relação entre esses campos. Quando você cria uma relação com a integridade referencial imposta, o mecanismo de banco de dados Jet cria um índice na chave externa se já não existir. Caso contrário, o mecanismo de banco de dados Jet usa o índice já existente.

    Observação O mecanismo de banco de dados Jet otimiza automaticamente uma consulta que associa uma tabela do Access em seu disco rígido e uma tabela do servidor ODBC se o acesso a tabela é pequeno e se os campos associados estão indexados. Nesse caso, Access melhora o desempenho, solicitando somente os registros necessários do servidor. Certifique-se de que tabelas associadas de diferentes origens sejam indexadas nos campos de associação.
  • Selecione o menor tipo de dados que é apropriado

    Quando você define um campo em uma tabela, selecione o menor tipo de dados que é apropriado para os dados no campo. Além disso, verifique se os campos que você planeja usar em associações tem os mesmos tipos de dados ou tipos de dados compatíveis, como AutoNumeração e número (se a propriedade FieldSize estiver definida como Inteiro longo ).
  • Adicione os campos que você deve ter

    Quando você cria uma consulta, adicione os campos que você deve ter. Em campos que são usados para definir critérios, clique para desmarcar a caixa de seleção Mostrar se desejar exibir esses campos.
  • Salve a instrução SQL como uma consulta

    Se a propriedade OrigemDoRegistro para um formulário ou relatório é definida como uma instrução SQL, salve a instrução SQL como uma consulta e, em seguida, defina a propriedade OrigemDoRegistro como o nome da consulta.
  • Evite campos calculados

    Evite campos calculados em subconsultas. Se você adicionar uma consulta que contenha um campo calculado a outra consulta, a expressão no campo calculado lento o desempenho na consulta de nível superior. No exemplo a seguir, a consulta Q1 é usada como a entrada para a consulta Q2:
    T1: SELECT IIF([MyColumn]="Yes","Order Confirmed","Order Not Confirmed") AS X FROM MyTable;
    T2: SELECT * FROM Q1 WHERE X = "Pedido Confirmado";
    Porque a expressão IIF em Q1 não pode ser otimizada, Q2 também não pode ser otimizada. Se uma expressão que não pode ser otimizada estiver aninhada em uma subconsulta, todas as consulta não pode ser otimizada.

    Uma maneira alternativa de construir a consulta é o seguinte:
    T1: SELECT * FROM MyTable WHERE MyColumn = "Sim";
    Se forem necessário expressões na saída, tente colocar as expressões em um controle em um formulário ou relatório. Por exemplo, você pode alterar a consulta anterior para uma consulta parâmetro que solicite o valor de MyColumn e, em seguida, basear um formulário ou relatório na consulta. No formulário ou no relatório, em seguida, você pode adicionar um controle calculado que exibe "Hello" ou "Tchau", dependendo do valor em MyColumn.

    Construa a consulta da seguinte maneira:
    PARAMETERS [para ver ordens confirmadas, pressione Sim. Para ver ordens não confirmadas, pressione não.] Texto;
    SELECIONE *
    FROM MyTable
    WHERE MyColumn = [para ver ordens confirmadas, pressione Sim. Para ver ordens não confirmadas, pressione não.];
    No controle calculado no formulário ou relatório, digite:
    = IIF([MyColumn]="Yes","Order Confirmed","Order Not Confirmed")
  • Especificar Agrupar por

    Quando você agrupa registros por valores em um campo associado, especificar Agrupar por para o campo que está na mesma tabela como o campo que você é calculando o total (calculando uma agregação). Por exemplo, no banco de dados de exemplo Northwind.mdb, se você criar uma consulta que calcule o campo Quantidade na tabela Detalhes do pedido e, em seguida, agrupe por CódigoDoPedido, você pode especificar Agrupar por para o campo CódigoDoPedido na Order Details tabela. Se você especificar Agrupar por para o campo CódigoDoPedido na tabela Pedidos, Access deve ingressar em todos os registros pela primeira vez e execute a agregação, em vez de executar a agregação e, em seguida, ingressar em somente os campos necessários.

    Para maior velocidade, utilize Agrupar por no como alguns campos possível. Como alternativa, use a função primeiro se for possível.

    Se uma consulta de totais incluir uma associação, considere agrupar registros em uma consulta e, em seguida, adicionar essa consulta a uma consulta separada que executa a associação. Quando você fizer isso, o desempenho pode ser melhorado com algumas consultas.
  • Evite critérios de consulta restritivos

    Evite critérios de consulta restritivos em campos calculados e em campos não indexados se for possível. Use expressões de critérios que você pode otimizar.
  • Testar o desempenho de consulta em um campo que é usado em uma associação entre tabelas

    Se você utilizar critérios para restringir os valores em um campo que é usado em uma associação entre tabelas com um relacionamento um-para-muitos, teste para saber se a consulta é executada mais rapidamente com os critérios posicionados no lado "um" ou no lado "muitos" da associação. Em algumas consultas, você pode perceber um desempenho mais rápido adicionando os critérios para o campo no lado "um" da associação em vez de no lado "muitos" da associação.
  • Campos de classificação do índice

    Indexe os campos que você usar para classificação.
  • Usar consultas criar tabela para criar tabelas

    Se seus dados forem alterados raramente, use consultas criar tabela para criar tabelas dos seus resultados da consulta. Use as tabelas resultantes em vez de consultas como base para seus formulários, relatórios ou suas outras consultas. Certifique-se de que você adicionar índices de acordo com as diretrizes que você ler neste artigo.
  • Evite utilizar funções agregadas de domínio

    Evite utilizar funções agregadas de domínio, como a função DPesquisa para acessar dados de uma tabela que não está na consulta. Funções agregadas de domínio são específicas para o Access e isso significa que do Jet, mecanismo de banco de dados não pode otimizar consultas que usam funções agregadas de domínio. Em vez disso, adicione a consulta à tabela que a função estava acessando ou crie uma subconsulta.
  • Utilize títulos de coluna fixa

    Se você estiver criando uma consulta de tabela de referência cruzada, utilize títulos de coluna fixos sempre que possível.
  • Usar operadores

    Use o operador Between... And , o operador em e o = operador em campos indexados.
  • Otimizar o desempenho no servidor

    Para consultas de atualização em massa nas fontes de dados ODBC, otimize o desempenho no servidor, definindo a propriedade FailOnError como Sim.
Referências
Para obter mais informações sobre como otimizar o desempenho no Microsoft Access 2000, clique em Ajuda do Microsoft Access no menu Ajuda , digite a otimizar o desempenho no Assistente do Office ou no Assistente de resposta e, em seguida, clique em Pesquisar para exibir o tópico.
Para obter mais informações sobre como otimizar o desempenho no Microsoft Access 2002, clique em Ajuda do Microsoft Access no menu Ajuda , tipo melhorar o desempenho de um Access banco de dados no Assistente do Office ou no Assistente de resposta e clique em Pesquisar para exibir 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 , digite melhorar o desempenho de um banco de dados do Access na Procurar caixa no painel Assistência e clique em Iniciar pesquisa para exibir o tópico.

Para obter mais informações sobre como usar índices no Access 2000, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
209564ACC2000: Índices compostos devem restringir o primeiro campo indexado
Otimizar o desempenho aprimorar aumentou consulta ACC2000 ACC2002 ACCXP ACC2003

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 209126 - Última Revisão: 12/05/2015 11:02:48 - Revisão: 2.5

Microsoft Office Access 2003, Microsoft Access 2002 Standard Edition, Microsoft Access 2000 Standard Edition

  • kbnosurvey kbarchive kbmt kbquery kbhowto kbperformance kbinfo kbusage KB209126 KbMtpt
Comentários