Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Co jest szybsze — INSTR czy LIKE?

Wyszukiwanie FULLTEXT będzie absolutnie szybsze, jak zauważył kibibu w powyższych komentarzach.

Jednak :

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)

W moich testach zachowują się dokładnie tak samo. Obydwa nie rozróżniają wielkości liter i generalnie wykonują skanowanie całej tabeli, co jest generalnie zabronione w przypadku wysokowydajnego MySQL.

Chyba że przeprowadzasz wyszukiwanie prefiksu w indeksowanej kolumnie:

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

W takim przypadku LIKE z tylko symbolem wieloznacznym sufiksu jest znacznie szybsze.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Spark JoinWithCassandraTable na kluczu partycji TimeStamp STUCK

  2. Niezdefiniowana zmienna:pdo, wywołanie funkcji członkowskiej Prepare() na null

  3. Aktualizacja H2 z dołącz

  4. mysql:odwoływanie się do kolumn po numerach

  5. Błąd duplikatu MySQL z ALTER IGNORE TABLE