El 27/08/07, Iñaki Baz Castillo <[EMAIL PROTECTED]> 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 > >

