DEV Community

William Martins 🇧🇷
William Martins 🇧🇷

Posted on

Otimizar queries Like %termo% no MySQL

Precisei montar uma API para um autocomplete e a busca precisava ser em qualquer parte do texto:

select `pessoas`.* from `pessoas` where `nomeArtistico` like '%Claudinho%' order by `ultima_atualizacao` asc limit 200

Essa query tava demorando ~700ms para rodar.

Decidir usar o fulltext do MySQL:

Adicionei o index

ALTER TABLE pessoas ADD FULLTEXT(nomeArtistico)

E a query:

select `pessoas`.* from `pessoas` where MATCH(nomeArtistico) AGAINST('Claudinho') order by `ultima_atualizacao` asc limit 200

O tempo pra rodar caiu pra ~19ms

A forma como a busca é feita é diferente e os resultados também, mas para a regra de negócio da minha aplicação resolveu e com um tempo bem menor :)

Nesse artigo tem uma explicação mais detalhada:
https://www.devmedia.com.br/mysql-fulltext-search/14040

Top comments (0)