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

Коя SQL заявка е по-добра, MATCH AGAINST или LIKE?

Актуализиране

От MySQL 5.6 и по-късно, InnoDB tables поддържа Match... Against .

Първото е много По-добре. На MyISAM таблици, той ще използва пълен текстов индекс срещу тези колони. Другият ще направи пълно сканиране на таблицата, като прави конкат на всеки ред и след това сравнение.

LIKE е ефективен само ако го правите срещу:

  • колона (не е резултат от функция, освен ако вашият конкретен доставчик на база данни поддържа функционални индекси – Oracle, например – и вие ги използвате);
  • началото на колоната (т.е. LIKE 'blah%' за разлика от LIKE '%blah%' ); и
  • колона, която е индексирана.

Ако някое от тези условия не е вярно, единственият начин SQL машината да изпълни заявката е като извърши пълно сканиране на таблицата. Това може да се използва под около 10-20 хиляди реда. Освен това обаче бързо става неизползваем.

Забележка: Един проблем с MATCH в MySQL е, че изглежда съвпада само с цели думи, така че търсенето на „bla“ няма да съвпадне с колона със стойност „blah“, но търсенето на „bla*“ ще.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да наблюдавате метриките на HAProxy с ClusterControl

  2. Как да добавите ограничение NOT NULL в MySQL

  3. ИЗБЕРЕТЕ * КЪДЕТО НЕ СЪЩЕСТВУВА

  4. Инсталирайте множество MySQL екземпляри на Linux сървър - използвайте отделен конфигурационен файл на MySQL

  5. ИЗБИРАНЕ с множество условия WHERE в една и съща колона