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

Co je rychlejší — INSTR nebo LIKE?

FULLTEXTOVÉ vyhledávání bude absolutně rychlejší, jak kibibu poznamenal v komentářích výše.

Nicméně :

mysql> select COUNT(ID) FROM table WHERE INSTR(Name,'search') > 0;
+-----------+
| COUNT(ID) |
+-----------+
|     40735 | 
+-----------+
1 row in set (5.54 sec)

mysql> select COUNT(ID) FROM table WHERE Name LIKE '%search%';
+-----------+
| COUNT(ID) |
+-----------+
|     40735 | 
+-----------+
1 row in set (5.54 sec)

V mých testech fungují úplně stejně. Oba nerozlišují velká a malá písmena a obecně provádějí skenování celé tabulky, což je obecně ne-ne, když se jedná o vysoce výkonné MySQL.

Pokud neprovádíte vyhledávání prefixů v indexovaném sloupci:

mysql> select COUNT(ID) FROM table WHERE Name LIKE 'search%';
+-----------+
| COUNT(ID) |
+-----------+
|         7 | 
+-----------+
1 row in set (3.88 sec)

V takovém případě je LIKE pouze se zástupným znakem přípony mnohem rychlejší.



  1. Java SQL ERROR:Relation Table_Name neexistuje

  2. MySQL:Jak vložit záznam pro každý výsledek v dotazu SQL?

  3. Získejte všechny znaky před mezerou v MySQL

  4. Více cizích klíčů v jedné tabulce k jedné další tabulce v mysql