sql >> Database teknologi >  >> RDS >> Mysql

Hvad er hurtigere - INSTR eller LIKE?

FULLTEXT-søgninger vil absolut være hurtigere, som kibibu bemærkede i kommentarerne ovenfor.

Men :

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)

I mine test præsterer de præcis det samme. De er begge ufølsomme for store og små bogstaver, og generelt udfører de fuld-table-scanninger, et generelt nej-nej, når de har at gøre med højtydende MySQL.

Medmindre du laver en præfikssøgning på en indekseret kolonne:

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

I så fald er LIKE med kun et suffikset jokertegn meget hurtigere.



  1. Ryd MySQL-forespørgselscache uden at genstarte serveren

  2. Måling af "Observer Overhead" af SQL Trace vs. Extended Events

  3. SQL Inner Join

  4. Dynamisk SQL resulterer i midlertidig tabel i SQL Stored procedure