Mysql
 sql >> база данни >  >> RDS >> Mysql

Какво обикновено е по-бързо, прехвърляне през файлове или изпълняване на SQL LIKE %x% заявка през blobs?

Ако имате 1 милион файла, през които да преминете, ще (най-добре, за което знам) ще преминете през всеки един с регулярен израз.

За всички намерения и цели, в крайна сметка ще направите едно и също нещо над редовете на таблицата, ако ги направите масова заявка с помощта на оператор LIKE или регулярен израз.

Моят собствен опит с grep обаче е, че рядко търся нещо, което не съдържа поне една пълна дума, така че може да успеете да се възползвате от база данни, за да намалите набора, в който търсите.

MySQL има вградени функции за пълнотекстово търсене, но бих препоръчал да не ги използвате, защото те означават, че не използвате InnoDB.

Можете да прочетете за тези от Postgres тук:

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

След като създадете индекс в колона tsvector, можете да направите своя "grep" в две стъпки, едната за незабавно намиране на редове, които може да се квалифицират неясно, последвана от друга според вашите истински критерии:

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

Това ще бъде значително по-бързо от всичко, което grep може да направи.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да вмъкнете данни за подреждане от многоизмерен масив

  2. Множество вложки със ЗНП

  3. получаване на грешка HTTP Състояние 405 - HTTP методът GET не се поддържа от този URL, но не е използван `get` някога?

  4. Как да принудим MySQL да приеме 0 като валидна стойност за автоматично увеличение

  5. Интерполирайте липсващите стойности в MySQL таблица