Pensamento rápido – “ilike” SQL

4 Set

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!

VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)

One Response to “Pensamento rápido – “ilike” SQL”

  1. Gnomozarp outubro 29, 2009 at %H:%M 03Thu, 29 Oct 2009 15:47:25 +000025. #

    Xuxa, só pra complementar… eu fiz um teste aqui no MS-SQL e fica até mais lento colocar o upper ou lower… mas algo em torno de 1% 🙂
    Gnomozarp

    VA:F [1.9.22_1171]
    Rating: 0.0/5 (0 votes cast)

Leave a Reply