sql >> Databáze >  >> RDS >> Mysql

Co je obecně rychlejší, procházení soubory nebo spouštění dotazu SQL LIKE %x% přes blob?

Pokud máte k procházení 1 milion souborů, projdete (nejlépe vím) každý s regulárním výrazem.

Pro všechny záměry a účely skončíte tím, že uděláte totéž s řádky tabulky, pokud na ně budete hromadně dotazovat pomocí operátoru LIKE nebo regulárního výrazu.

Moje vlastní zkušenost s grep je, že málokdy hledám něco, co neobsahuje alespoň jedno celé slovo, takže možná budete moci využít databázi ke zmenšení množiny, ve které hledáte.

MySQL má nativní funkce fulltextového vyhledávání, ale nedoporučoval bych to, protože znamenají, že nepoužíváte InnoDB.

O těch z Postgresu si můžete přečíst zde:

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

Po vytvoření indexu ve sloupci tsvector můžete provést svůj „grep“ ve dvou krocích, jedním okamžitě vyhledejte řádky, které by mohly nejasně splňovat podmínky, a poté dalším podle vašich skutečných kritérií:

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

To bude výrazně rychlejší, než cokoli dokáže grep.



  1. Určete velikost řádku pro tabulku

  2. SQL dotaz k vytvoření databáze v MySQL

  3. Jak profilovat PostgreSQL databázi?

  4. Jak poddotaz NOT IN pracuje s hodnotami NULL?