From: | Jean-Max Reymond <jmreymond(at)gmail(dot)com> |
---|---|
To: | pgsql-fr-generale(at)postgresql(dot)org |
Subject: | Re: Un enregistrement au hasard ? |
Date: | 2008-11-12 21:45:37 |
Message-ID: | gffiq1$5io$1@ger.gmane.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-fr-generale |
Sébastien Dinot a écrit :
> Samuel ROZE a écrit :
>> Ces solutions sont éfficaces (les 2 méthodes marchent :)) mais elles
>> nécessite un parcours de toute la table (ou de l'index) non ?
>
> Pour en avoir le cœur net, il suffit de le demander à PostgreSQL via un petit
> EXPLAIN. Voici un exemple :
>
> adherents=# EXPLAIN SELECT * FROM personne ORDER BY RANDOM() LIMIT 1;
> QUERY PLAN
> -------------------------------------------------------------------------
> Limit (cost=44.20..44.20 rows=1 width=21)
> -> Sort (cost=44.20..48.80 rows=1840 width=21)
> Sort Key: (random())
> -> Seq Scan on personne (cost=0.00..35.00 rows=1840 width=21)
> (4 lignes)
>
> Il y a donc bien un parcours séquentiel de la table, ce qui n'est pas très
> étonnant. (c:
>
> Sébastien
>
il me semble qu'en plus efficace, on peut écrire:
SELECT * FROM personne OFFSET RANDOM() LIMIT 1;
--
Jean-Max Reymond
Eruption de l'Etna: http://jmreymond.free.fr/Etna2002
From | Date | Subject | |
---|---|---|---|
Next Message | Sébastien Dinot | 2008-11-12 22:12:22 | Re: Un enregistrement au hasard ? |
Previous Message | Stephane Bortzmeyer | 2008-11-12 21:31:54 | Re: Un enregistrement au hasard ? |