Estou pensando no problema, se houver várias colunas nas quais a pesquisa deve funcionar o mais rápido possível.
Por exemplo, veja a tabela TEST(COL_A, COL_B)
com um índice (árvore) TEST_IDX(COL_A, COL_B)
. Este índice pode ser usado para as seguintes WHERE
condições:
WHERE COL_A='x' AND COL_B='y'
WHERE COL_A='x' AND COL_B<'y'
Mas o que fazer, se ambos os termos de condição estiverem usando desigualdade? Então, eu estou pensando em um WHERE COL_A<'x' AND COL_B<'y'
? AFAIK, os índices de árvore de registro normais nesses casos não podem funcionar. Posso imaginar alguma estrutura de dados que possa tornar essas consultas também rápidas, mas acho que deveria usar uma estrutura de dados muito sofisticada como uma árvore simples.
Isso no MySQL existe? Ou em outros servidores SQL?
Crie dois índices separados: idxA(COL_A) e idxB(COL_B). O MySQL usará ambos os índices e então mesclará o resultado.
http://dev.mysql.com/doc/refman/5.0/en/index-merge-optimization.html
Seção: 8.3.1.4.3 Algoritmo de acesso de união de classificação de mesclagem de índice