Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Was ist im Allgemeinen schneller, das Durchsuchen von Dateien oder das Ausführen einer SQL LIKE %x%-Abfrage durch Blobs?

Wenn Sie 1 Million Dateien durchgehen müssen, werden Sie (soweit ich weiß) jede mit einem regulären Ausdruck durchgehen.

Im Grunde werden Sie dasselbe mit Tabellenzeilen machen, wenn Sie sie mit einem LIKE-Operator oder einem regulären Ausdruck massenhaft abfragen.

Meine eigene Erfahrung mit grep ist jedoch, dass ich selten nach etwas suche, das nicht mindestens ein vollständiges Wort enthält, so dass Sie möglicherweise eine Datenbank nutzen können, um die Menge, in der Sie suchen, zu reduzieren.

MySQL hat native Volltextsuchfunktionen, aber ich würde davon abraten, weil sie bedeuten, dass Sie InnoDB nicht verwenden.

Sie können die von Postgres hier nachlesen:

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

Nachdem Sie einen Index für eine tsvector-Spalte erstellt haben, können Sie Ihr "grep" in zwei Schritten ausführen, einen, um sofort Zeilen zu finden, die vage qualifiziert sein könnten, gefolgt von einem weiteren zu Ihren wahren Kriterien:

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

Das wird bedeutend schneller sein als alles, was grep tun kann.