Digamos que na tabela de funcionários, criei um índice (idx_name) na emp_name
coluna da tabela.
Preciso especificar explicitamente o nome do índice na cláusula select ou ele será usado automaticamente para acelerar as consultas.
Se for necessário especificá-lo na cláusula select, qual é a sintaxe para usar o índice na consulta selecionada?
Boa pergunta,
Normalmente, o mecanismo de banco de dados deve selecionar automaticamente o índice a ser usado com base nos planos de execução de consulta que cria. No entanto, existem alguns casos bastante raros em que você deseja forçar o banco de dados a usar um índice específico.
Para responder à sua pergunta específica, você deve especificar o banco de dados que está usando.
Para MySQL, você deseja ler a documentação da sintaxe de dicas de índice sobre como fazer isso
fonte
Como usar o índice na instrução select?
deste jeito:
E muitas outras maneiras de verificar isso
Eu preciso especificar explicitamente?
fonte
Em geral , o índice será usado se o custo presumido de uso do índice e, possivelmente, de realizar mais pesquisas de favoritos for menor do que o custo de apenas digitalizar a tabela inteira.
Se sua consulta for do formulário:
E 1 linha em 1000 tem o nome Boris, é quase certo que será usado. Se o nome de todos for Boris, provavelmente recorrerá a uma varredura de tabela, já que o índice dificilmente será uma estratégia mais eficiente para acessar os dados.
Se for uma tabela ampla (muitas colunas) e você:
Em seguida, ele ainda pode escolher realizar a verificação da tabela, se for uma suposição razoável de que levará mais tempo para recuperar as outras colunas da tabela do que apenas para pesquisar o nome, ou novamente, se for provável que recupere um muitas linhas de qualquer maneira.
fonte
O otimizador julgará se o uso de seu índice tornará sua consulta mais rápida e, se for, usará o índice.
Dependendo do seu RDBMS, você pode forçar o uso de um índice, embora não seja recomendado, a menos que você saiba o que está fazendo.
Em geral, você deve indexar colunas que você usa em junções de tabela e instruções where
fonte
Ao usar a coluna à qual o índice é aplicado nas suas condições, ele será incluído automaticamente. Você não precisa usá-lo, mas ele irá acelerar as consultas quando for usado.
Usará o índice apropriado.
fonte
Geralmente, quando você cria um índice em uma tabela, o banco de dados usará automaticamente esse índice enquanto procura dados nessa tabela. Você não precisa fazer nada a respeito.
No entanto, no MSSQL, você pode especificar um
index hint
que pode especificar que um determinado índice deve ser usado para executar esta consulta. Mais informações sobre isso podem ser encontradas aqui .Index hint
também parece estar disponível para MySQL . Graças a Tudor Constantine.fonte
A dica de índice está disponível apenas para servidores de banco de dados do Microsoft Dynamics. Para o SQL Server tradicional, os filtros que você define em sua cláusula 'Where' devem persuadir o mecanismo a usar quaisquer índices relevantes ... Desde que o plano de execução do mecanismo possa identificar com eficiência como ler as informações (seja uma verificação completa da tabela ou uma verificação indexada ) - ele deve comparar os dois antes de executar a instrução adequada, como parte de seu otimizador de desempenho integrado.
No entanto, você pode forçar o otimizador a fazer a varredura usando algo como
Ou para buscar um índice específico usando algo como
A escolha é sua. Observe as propriedades do índice da tabela no painel de objetos para ter uma ideia de qual índice deseja usar. Deve corresponder ao (s) seu (s) filtro (s).
Para melhores resultados, liste os filtros que retornariam o menor número de resultados primeiro. Não sei se estou certo em dizer, mas parece que os filtros de consulta são sequenciais; se você acertar a sequência, o otimizador não deve ter que fazer isso por você, comparando todas as combinações, ou pelo menos não começar a comparação com as consultas mais caras.
fonte