[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Costo computacional usando expresiones regulares en MySQL/Postgres



El 27/08/07, Iñaki Baz Castillo <ibc.listas@aliax.net> escribió:
> Hola, de cara a un proyecto necesito usar expresiones regulares en consultas
> SQL pero sobre todo **prima** que el servidor sea lo más eficiente posible
> (se trata de un servidor SIP OpenSer que debe rutar llamadas sin ver mermado
> su rendimiento en la medida de lo posible).
>
> Sé que hay tres tipos de expresiones regulares en SQL:
>  - LIKE
>  - SIMILAR TO
>  - REGEXP
>
> Aún no sé si realmente necesito hacer expresiones regulares complejas o me
> podría servir con el limitado "LIKE" (es muy posible que me sea suficiente).
>
> Mis preguntas serían:
>
> a) ¿Es notorio el coste computacional al usar "SIMILAR TO" o "REGEXP" sobre
> usar "LIKE"?
>
> b) De momento estoy montando un prototipo con MySQL pero planeo usar Postgres.
> Creo haber entendido que los tres tipos de expresiones regulares son SQL
> estándar perfectamente igualmente soportadas por ambas bases de datos. ¿Es
> así o me encontraré con algún problema al migrar a Postgres?
>
>

Nunca tuve la oportunidad de usar REGEXP en ninguno de los dos sitemas
de bases de datos que mencionás, pero por lo que tengo entendido
cualquiera de esas tres alternativas (like, similar to, regexp) hacen
un scan de la tabla y no aprovechan indices salvo casos muy, muy, muy
específicos.

Eso es, si tenes 1.000.000 de registros en la tabla, se deben procesar
todos y cada uno de ellos teniendo que leerlos a todos desde disco.

Siempre se aconseja que organices tus datos y tu modelo de datos para
lograr una buena utilización de los índices, ya que mejoran la
performance ENORMEMENTE, pero tampoco no un abuso de ellos ya que
pueden estropear tu performace ENORMEMENTE.

En especial, un indice sobre una columna numerica entera es una de
esas bendiciones que todos esperamos tener en nuestros proyectos.

Saludos.

> Saludos y gracias.
>
>
> --
> Iñaki Baz Castillo
>
>



Reply to: