Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 06/01/2011 17:55:56
- meles
- Membre
Tirage au sort
Bonjour,
y'a t-il moyen de demander à postgresql de me renvoyer n lignes au hasard dans une requete (a l'instar de limit ou offset) genre select * from ma_table sample 100 pour récuperer 100 lignes au pif !
Cordialement
Hors ligne
#2 06/01/2011 17:59:02
- Marc Cousin
- Membre
Re : Tirage au sort
Pas simplement non. Et avec de bonnes performances encore moins. Ça a besoin d'être rapide ?
Marc.
Hors ligne
#3 06/01/2011 18:05:50
- meles
- Membre
Re : Tirage au sort
Par nécessairement, c'est pour faire de l'échantillonage occasionel, tirage au sort sans remise.
Faut-il passer par un create function en pl/pgsql ?
Hors ligne
#4 06/01/2011 18:09:34
- gleu
- Administrateur
Re : Tirage au sort
La seule solution simple à ma connaissance est :
select * from ma_table order by random() limit 100
Guillaume.
Hors ligne
#5 06/01/2011 18:33:52
- meles
- Membre
Re : Tirage au sort
Bonsoir,
ça me convient parfaitement en terme de simplicité
Merci beaucoup
Hors ligne
#6 07/01/2011 15:05:17
- Marc Cousin
- Membre
Re : Tirage au sort
Le défaut de la solution c'est :
- full scan de la table
- calcul d'une fonction random pour chaque enregistrement (c'est coûteux)
- tri sur les enregistrements (c'est aussi très coûteux).
Bref, c'est juste pour dire que ça marche, mais qu'il ne faut vraiment pas l'exécuter toutes les secondes…
Marc.
Hors ligne
#7 07/01/2011 15:51:16
- meles
- Membre
Re : Tirage au sort
Effectivement, je vois que le temps d'exécution de la requête est long, mais c'est du cas par cas pour tirer une liste de dossier au sort et aller les controler, donc rien de critique en terme de performances.
merci encore à tous
Hors ligne
Pages : 1