From: | Miguel <mmiranda(at)123(dot)com(dot)sv> |
---|---|
To: | Alvaro Herrera <alvherre(at)commandprompt(dot)com> |
Cc: | manuel lamas <manuel3w(at)hotmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: order by random? |
Date: | 2006-03-22 19:05:54 |
Message-ID: | 4421A012.2050208@123.com.sv |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Alvaro Herrera wrote:
>Miguel escribió:
>
>
>
>>Manuel, el select no devolvera los primeros 75000 y luego los ordenara
>>aleatoriamente (o mas bien los desordenara) ?
>>
>>
>
>Pero hombre, examina el plan de ejecucion!
>
>alvherre=# create table foo (a serial);
>CREATE TABLE
>alvherre=# insert into foo default values;
>INSERT 0 1
>[n veces]
>
>alvherre=# select * from foo order by random() limit 4;
> a
>----
> 1
> 21
> 20
> 14
>(4 filas)
>
>
>Bien, veo que hay algunos valores altos y otros bajos. Miremos el plan
>de ejecucion:
>
>alvherre=# explain select * from foo order by random() limit 4;
> QUERY PLAN
>-------------------------------------------------------------------
> Limit (cost=155.13..155.14 rows=4 width=4)
> -> Sort (cost=155.13..160.48 rows=2140 width=4)
> Sort Key: random()
> -> Seq Scan on foo (cost=0.00..36.75 rows=2140 width=4)
>(4 filas)
>
>
>Aca veo que primero se recorre la tabla completa, _luego_ se ordena
>aleatoriamente, y finalmente se obtienen los primeros N valores de esa
>tabla "ordenada". Que era lo que querias.
>
>
>
Eso es precisamente lo que quiero , lo probare. Gracias Alvaro
>Ahora, si vas a _modificar_ esos registros tienes que aplicar FOR
>UPDATE, pero cuidado!
>
Yo solamente necesito el select, el saldo actual esta en otra tabla, con
lo primero basta,
gracias a todos nuevamente,
saludos
---
From | Date | Subject | |
---|---|---|---|
Next Message | Raul Caso | 2006-03-22 19:31:46 | Re: ayuda constraint check |
Previous Message | Pablo Braulio | 2006-03-22 18:50:59 | ¿Se puede poner condicionales a un insert?. |