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

Regexp e mysql:existe um operador AND


Se você precisar de recursos de pesquisa sofisticados, use uma solução de pesquisa de texto completo.

No MySQL, o índice de pesquisa de texto completo integrado recurso funciona apenas no mecanismo de armazenamento MyISAM. Isso é lamentável, porque o InnoDB é o mecanismo de armazenamento preferido para todas as tabelas do MySQL. O InnoDB nas versões recentes do MySQL é mais rápido que o MyISAM na maioria dos casos e possui melhores recursos de recuperação de falhas do que o MyISAM.

Houve declarações da equipe de desenvolvimento do MySQL que eles pretendem implementar um índice de texto completo para o InnoDB. Mas estamos a muitos meses ou mesmo anos longe disso estar disponível, e certamente exigirá a atualização para alguma versão posterior do MySQL.

Se você precisar usar índices de texto completo MyISAM, sugiro armazenar seus dados principalmente no InnoDB e, em seguida, armazenar uma cópia do texto pesquisável em uma tabela MyISAM.

Você também pode usar uma solução externa como Sphinx Search ou Apache Solr para fornecer recursos de pesquisa de texto completo externamente ao banco de dados. Existe até uma maneira de usar um índice Sphinx Search por meio da interface do mecanismo de armazenamento plugável MySQL .

Eu não gosto de usar LIKE com curingas ou REGEXP para pesquisas de texto completo. Essas soluções incorrem em varreduras de tabela completas para cada pesquisa e, dependendo do volume de seus dados, são executadas centenas ou milhares de vezes mais lentamente do que se você tivesse um índice.

Eu escrevi uma comparação de soluções de pesquisa de texto completo para MySQL em minha apresentação, "Pesquisa prática de texto completo no MySQL ," e também em um capítulo do meu livro SQL Antipatterns:Avoiding the Pitfalls of Database Programming .

atualização:MySQL 5.6 está atualmente em desenvolvimento (a partir de fevereiro de 2012), e implementa uma solução de índice de texto completo para InnoDB.