sql >> Databasteknik >  >> RDS >> Mysql

Vad är generellt snabbare, att greppa igenom filer eller köra en SQL LIKE %x%-fråga genom blobbar?

Om du har 1M filer att greppa igenom kommer du (bäst jag vet) att gå igenom var och en med ett reguljärt uttryck.

I alla avseenden kommer du att göra samma sak över tabellrader om du massförfrågar dem med en LIKE-operator eller ett reguljärt uttryck.

Min egen erfarenhet av grep är att jag sällan letar efter något som inte innehåller minst ett helt ord, så du kanske kan dra nytta av en databas för att minska mängden du söker i.

MySQL har inbyggda fulltextsökfunktioner, men jag skulle rekommendera mot eftersom de betyder att du inte använder InnoDB.

Du kan läsa om dem från Postgres här:

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

Efter att ha skapat ett index på en tsvector-kolumn kan du sedan göra ditt "grep" i två steg, ett för att omedelbart hitta rader som kan vara vagt kvalificerade, följt av ett annat på dina sanna kriterier:

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

Det kommer att vara betydligt snabbare än något grep kan göra.



  1. Oracle WITH och MATERIALISE-tips fungerar som autonom transaktion för funktioner

  2. Hur man skapar en ny databasanslutning i django

  3. Byta namn på en InnoDB-tabell utan att uppdatera referenser för främmande nyckel till den?

  4. SQL-syntaxfel, nummer, datum/tid