Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como acelerar consultas SELECT .. LIKE no MySQL em várias colunas?


Um índice não aceleraria a consulta, porque para colunas textuais os índices funcionam indexando N caracteres começando da esquerda. Quando você faz LIKE '%text%' não pode usar o índice porque pode haver um número variável de caracteres antes do texto.

O que você deve fazer é não usar uma consulta como essa. Em vez disso, você deve usar algo como FTS (Full Text Search) que o MySQL suporta para tabelas MyISAM. Também é muito fácil fazer esse sistema de indexação você mesmo para tabelas não MyISAM, você só precisa de uma tabela de índice separada onde você armazena palavras e seus IDs relevantes na tabela real.

Atualizar

Pesquisa de texto completo disponível para tabelas InnoDB com MySQL 5.6+.