Mysql
 sql >> Base de données >  >> RDS >> Mysql

Qu'est-ce qui est généralement plus rapide, parcourir des fichiers ou exécuter une requête SQL LIKE %x% via des blobs ?

Si vous avez 1 000 000 fichiers à parcourir, vous devrez (à ma connaissance) parcourir chacun d'eux avec une expression régulière.

À toutes fins utiles, vous finirez par faire la même chose sur les lignes du tableau si vous les interrogez en masse à l'aide d'un opérateur LIKE ou d'une expression régulière.

Ma propre expérience avec grep est que je recherche rarement quelque chose qui ne contient pas au moins un mot complet, cependant, vous pourrez peut-être tirer parti d'une base de données pour réduire l'ensemble dans lequel vous recherchez.

MySQL dispose de fonctionnalités natives de recherche en texte intégral, mais je vous déconseille car elles signifient que vous n'utilisez pas InnoDB.

Vous pouvez en savoir plus sur ceux de Postgres ici :

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

Après avoir créé un index sur une colonne tsvector, vous pouvez alors faire votre "grep" en deux étapes, une pour trouver immédiatement les lignes qui pourraient vaguement se qualifier, suivie d'une autre sur vos vrais critères :

select * from docs where tsvcol @@ :tsquery and (regexp at will);

Ce sera beaucoup plus rapide que tout ce que grep peut faire.