sql >> Database >  >> RDS >> Mysql

Wat is sneller - INSTR of LIKE?

FULLTEXT-zoekopdrachten zullen absoluut sneller zijn, zoals kibibu opmerkte in de opmerkingen hierboven.

Echter :

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)

In mijn tests presteren ze precies hetzelfde. Ze zijn beide niet hoofdlettergevoelig en voeren over het algemeen scans van de volledige tabel uit, een algemene no-no bij het omgaan met krachtige MySQL.

Tenzij u een prefix zoekt in een geïndexeerde kolom:

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

In dat geval is de LIKE met alleen een suffix-jokerteken veel sneller.



  1. Gratis ES voor 11.2.0.4 en 12.2 Releasedatum

  2. SQL stelt waarden van één kolom gelijk aan waarden van een andere kolom in dezelfde tabel

  3. pip install mislukt met /usr/bin/clang:Geen dergelijk bestand of map

  4. Gebruikersaccountbeheer, rollen, machtigingen, authenticatie PHP en MySQL - Deel 6