Re: regexp en pgsql

From: Juan <smalltalker(dot)marcelo(at)gmail(dot)com>
To: Gino Rojas Tillemann <gino(at)masnet(dot)cl>
Cc: Anthony <asotolongo(at)uci(dot)cu>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: regexp en pgsql
Date: 2011-06-28 20:07:31
Message-ID: BANLkTinKDFnrX4xuY=7kk6m5L_WZw+NnpQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Gino

Entonces y si las regexp estan compiladas en C no creo q haya manera de
mejorar la velocidad.
Las expresiones regulares la sintax es importante y existen muchas formas de

mejorar la busqueda.
Si no estas muy experto en ellas es posible construir expresiones regulares
poco eficientes

2011/6/28 Gino Rojas Tillemann <gino(at)masnet(dot)cl>

> el campo id ya esta indexado y no se trata de la cantidad de registros que
> tenga la tabla, probé moviendo 10 mil registros a una tabla nueva y demora
> lo mismo, solo cambia los tiempos de proceso cuando quito expresiones
> regulares de la función, pero lamentablemente no puedo quitar esas regexp de
> la fn, es por eso que busco que el proceso se haga mas rápido desde el
> procesador, lamentablemente postgresql solo me entrega un core del CPU para
> realizar este trabajo, si tan solo usara los 2 CPU y sus 8 nucleos sería
> maravilloso :)
>
>
>
> El 28 de junio de 2011 15:56, Anthony <asotolongo(at)uci(dot)cu> escribió:
>
> **
>> On 28/06/11 15:48, Gino Rojas Tillemann wrote:
>>
>> Hola Juan, si hago eso tendría que crear 3.200 indices para esa tabla,
>> ademas no necesariamente voy a actualizar el registros 1 al 10mil podría ser
>> del 8mil al 15mil etc...
>>
>> ahora voy a crear la misma función en C para ver si así logro mejores
>> resultados con el procesamiento del texto.
>>
>> alguna otra idea?
>> sld2
>>
>> El 28 de junio de 2011 15:41, Juan <smalltalker(dot)marcelo(at)gmail(dot)com>escribió:
>>
>>> Hola gente
>>> Gino por lo que veo en tu query te convendria tener un index en la
>>> expresion where
>>> o sea my_table tenga un index con where .
>>> o mejor.
>>>
>>> create index my_nombre_de_index on mytable( id ) where id between 1 and
>>> 10000 ;
>>> eso generalmente acelera las cosas.
>>> salvo claro esta q ya lo tengas
>>> salu2
>>> mdc
>>>
>>>
>>> 2011/6/28 Gino Rojas Tillemann <gino(at)masnet(dot)cl>
>>>
>>>> Hola a todos,
>>>>
>>>> hace un par de semanas estoy peleando con mi DB y las expresiones
>>>> regulares, cada vez que proceso 10 mil registros de un universo de 32
>>>> millones el motor demora 7 minutos pegados sin variación en procesar una
>>>> cadena de texto por cada registro; para lograr esto creé una función en
>>>> plpgsql con (de momento) 40 expresiones regulares (en algunos casos bastante
>>>> complejas) y actualizo un campo de una tabla con el resultado del proceso,
>>>> algo como esto:
>>>>
>>>> update my_table set campo_final=fn_regexp(campo1||campo2||campo3)
>>>> where id between 1 and 10000
>>>>
>>>> la función "fn_regexp" contiene la lógica de las expresiones regulares
>>>> y la tabla my_table es de 32 millones de registros
>>>>
>>>> si alguien tiene alguna idea de como optimizar la ejecución de las
>>>> expresiones regulares será de gran ayuda, gracias..
>>>>
>>>> haaa y por fa no me sugieran crear varios threads con otro lenguaje ya
>>>> que lo que busco es bajar mis actuales 7 minutos de proceso
>>>>
>>>>
>>>> saludos
>>>>
>>>> --
>>>> Gino Rojas Tillemann
>>>>
>>>
>>>
>>
>>
>> --
>> Gino Rojas Tillemann
>>
>> tienes algún criterio que te pueda servir para particionar la tabla? pues
>> el particioamiento te puede ayudar.
>> saludos
>>
>
>
>
> --
> Gino Rojas Tillemann
>

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Juan 2011-06-28 20:08:57 Re: regexp en pgsql
Previous Message Gino Rojas Tillemann 2011-06-28 19:59:29 Re: regexp en pgsql