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

Алтернативен синтаксис за пълнотекстово търсене на MySQL

За съжаление, според документацията на MySQL SELECT , "клаузата HAVING се прилага почти последно, точно преди елементите да бъдат изпратени на клиента, без оптимизация."

Разликата е, че първата заявка ще използва индекса на пълен текст за изчисляване на уместността само за редове, които имат 'Bob' в name . Втората заявка ще изчисли уместността за всички редове, след което изхвърлете повечето от тях (евентуално след сортиране на цялата таблица). Следователно втората заявка е значително по-бавна. Дори ако поставите клаузата ORDER BY в първата заявка, тя пак ще бъде по-бърза от използването на HAVING:

SELECT name, MATCH(name) AGAINST('Bob') AS relevance
FROM users
WHERE MATCH(name) AGAINST('Bob')
ORDER BY relevance DESC

Като цяло, "не използвайте HAVING за елементи, които трябва да са в клаузата WHERE."




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

  2. Ляво присъединяване или избор от множество таблици с помощта на запетая (,)

  3. Импортиране на XML със съдържание, посочено като атрибути, в MySQL таблица?

  4. QUARTER() Примери – MySQL

  5. Синтактична грешка поради използването на запазена дума като име на таблица или колона в MySQL