Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Qual é mais rápido - INSTR ou LIKE?


As pesquisas FULLTEXT serão absolutamente mais rápidas, como kibibu observou nos comentários acima.

No entanto :
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)

Nos meus testes, eles executam exatamente o mesmo. Ambos não diferenciam maiúsculas de minúsculas e geralmente executam varreduras de tabela completa, um não-não geral ao lidar com MySQL de alto desempenho.

A menos que você esteja fazendo uma pesquisa de prefixo em uma coluna indexada:
mysql> select COUNT(ID) FROM table WHERE Name LIKE 'search%';
+-----------+
| COUNT(ID) |
+-----------+
|         7 | 
+-----------+
1 row in set (3.88 sec)

Nesse caso, o LIKE com apenas um curinga de sufixo é muito mais rápido.