sql >> Databasteknik >  >> RDS >> Mysql

Vilket är snabbare – INSTR eller LIKE?

FULLTEXT-sökningar kommer absolut att gå snabbare, som kibibu noterade i kommentarerna ovan.

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 mina tester presterar de exakt likadant. De är båda skiftlägesokänsliga och i allmänhet utför de genomsökningar av hela tabeller, ett allmänt nej när de hanterar högpresterande MySQL.

Såvida du inte gör en prefixsökning på en indexerad kolumn:

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

I så fall är LIKE med bara ett suffix jokertecken mycket snabbare.



  1. Hur undkommer man understreck i strängfrågan i viloläge och SQL?

  2. MariaDB 10.6 och NextCloud:COMPRESSED Row är skrivskyddad som standard

  3. Prestandatestmetoder:Upptäcka ett nytt sätt

  4. Hur LIKE-operatören fungerar i MySQL