Skip site navigation (1) Skip section navigation (2)

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 (view raw or flat)
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

pgsql-fr-generale by date

Next:From: Sébastien DinotDate: 2008-11-12 22:12:22
Subject: Re: Un enregistrement au hasard ?
Previous:From: Stephane BortzmeyerDate: 2008-11-12 21:31:54
Subject: Re: Un enregistrement au hasard ?

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group