Eu adicionei índices à tabela que são usados para pesquisar resultados. Estou mostrando resultados por ordem ASC ou DESC. Então essa coluna deve ter índice ou não? Eu tenho mais 2 índices nessa tabela. Como o desempenho afetará criando ou não o índice para essa coluna?
mysql
performance
index
order-by
Somnath Muluk
fonte
fonte
Respostas:
Sim, o MySQL pode usar um índice nas colunas em ORDER BY (sob certas condições). No entanto, o MySQL não pode usar um índice para ordem ASC e DESC mista por (
SELECT * FROM foo ORDER BY bar ASC, pants DESC
). Compartilhar sua consulta e a instrução CREATE TABLE nos ajudaria a responder sua pergunta mais especificamente.Para obter dicas sobre como otimizar as cláusulas ORDER BY: http://dev.mysql.com/doc/refman/5.1/en/order-by-optimization.html
Editar 2012-01-21 8:53 AM
Havia perguntas sobre a fonte da minha declaração sobre o uso de um índice com ASC / DESC misto no ORDER BY. Na documentação ORDER BY Optimization :
Além disso, a palavra-chave DESC não tem sentido em CREATE INDEX
fonte
CREATE INDEX idx_foo ON foo(bar ASC, pants DESC);
Deveria trabalhar.ASC
eDESC
se aINDEX
tem a mesma mistura.Para quem quer saber a resposta no PostgreSQL, a resposta é sim, um índice será usado. De acordo com a documentação do PostgreSQL, o planejador de consultas "considerará a satisfação de uma especificação ORDER BY, digitalizando um índice disponível que corresponda à especificação ou digitalizando a tabela em ordem física e fazendo uma classificação explícita". Isso significa que, se houver um índice que o planejador possa usar, o fará, voltando a fazer uma classificação após recuperar as linhas correspondentes.
fonte