sql >> Database >  >> RDS >> Mysql

Wat is over het algemeen sneller, bestanden doorzoeken of een SQL LIKE %x%-query uitvoeren via blobs?

Als je 1 miljoen bestanden hebt waar je doorheen moet, zal je (voor zover ik weet) ze allemaal doornemen met een reguliere expressie.

In alle opzichten zul je uiteindelijk hetzelfde doen voor tabelrijen als je ze massaal opvraagt ​​met een LIKE-operator of een reguliere expressie.

Mijn eigen ervaring met grep is dat ik zelden zoek naar iets dat niet ten minste één volledig woord bevat, dus je kunt misschien profiteren van een database om de set waarin je zoekt te verkleinen.

MySQL heeft native full-text zoekfuncties, maar ik zou het afraden omdat ze betekenen dat je InnoDB niet gebruikt.

Je kunt hier lezen over die van Postgres:

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

Nadat u een index op een tsvector-kolom hebt gemaakt, kunt u uw "grep" in twee stappen uitvoeren, één om onmiddellijk rijen te vinden die mogelijk vaag in aanmerking komen, gevolgd door een andere op uw ware criteria:

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

Dat zal aanzienlijk sneller zijn dan alles wat grep kan doen.



  1. Hoe alle privileges van een gebruiker in Oracle te tonen?

  2. Hoe maak ik een partitie voor elke maand van het huidige jaar?

  3. Wat is de meest efficiënte manier om de tijd vanaf datetime te trimmen?

  4. Vergelijking van full text zoekmachine - Lucene, Sphinx, Postgresql, MySQL?