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

O que geralmente é mais rápido, percorrer arquivos ou executar uma consulta SQL LIKE %x% por meio de blobs?


Se você tiver 1 milhão de arquivos para percorrer, você (melhor que eu saiba) passará por cada um com uma expressão regular.

Para todos os efeitos, você acabará fazendo a mesma coisa nas linhas da tabela se as consultar em massa usando um operador LIKE ou uma expressão regular.

Minha própria experiência com o grep é que raramente procuro algo que não contenha pelo menos uma palavra completa, portanto, você pode aproveitar um banco de dados para reduzir o conjunto no qual está pesquisando.

O MySQL tem recursos nativos de pesquisa de texto completo, mas eu recomendo porque eles significam que você não está usando o InnoDB.

Você pode ler sobre os do Postgres aqui:

http://www.postgresql.org/docs/current/static/textsearch .html

Depois de criar um índice em uma coluna tsvector, você pode fazer seu "grep" em duas etapas, uma para encontrar imediatamente linhas que possam se qualificar vagamente, seguidas de outra em seus critérios verdadeiros:
select * from docs where tsvcol @@ :tsquery and (regexp at will);

Isso será significativamente mais rápido do que qualquer coisa que o grep possa fazer.