MySQL
Pensamento rápido – “ilike” SQL
by Handrus Nogueira on 12:18, under Dicas, Django, Multi Database, MySQL
Nota: Olá meus caros leitores, apesar do ChronosBox ser um ótimo Blog, eu estou focando meus esforços em um blog conjunto com meu amigo Handrus Nogueira, portanto não deixem de visitar o Dev With Passion! Todos os posts do ChronosBox estarão no Dev With Passion, exceto por alguns comentários novos. Abraços!
Hoje vi um post num dos blogs que acompanho, onde um camarada disse ter conseguido 1000% de melhora na performance de uma aplicação trocando um:
SELECT * FROM TABLE WHERE fieldname ILIKE 'abc%';
Para
SELECT * FROM TABLE WHERE LOWER(fieldname) LIKE 'abc%';
(diferença de ilike para lower… like)
Eu achei tosco (hehehe), óbviamente que esse ganho absurdo só pode ter ocorrido numa massa gigantesca de dados e provavelmente num campo sem índice.
Mas a minha dica é outra:
Além do ganho em performance o “ilike” não é suportado no mysql e sqlite.Portanto seu uso é extremamente desaconselhável, principalmente se você estiver trabalhando com Django, Rails ou qualquer aplicação que forneça um layer multi-db.
Claro que nos frameworks citados acima o único jeito de fazer isso é forçar o uso de “ilike”, suas ORMs conseguem lidar com situações assim muito bem.
Conclusão
Evite “ilike” em queries de sql, use o “lower()… like” ou “upper… like”; E se lembre de mudar sua variável para upper/lower!