Re: Un enregistrement au hasard ?

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

In response to

Responses

Browse pgsql-fr-generale by date

  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 ?