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

Re: SQL pour trouver le premier libre?

From: Marc Cousin <cousinmarc(at)free(dot)fr>
To: pgsql-fr-generale(at)postgresql(dot)org
Subject: Re: SQL pour trouver le premier libre?
Date: 2006-06-03 09:49:15
Message-ID: 200606031149.15269.cousinmarc@free.fr (view raw or flat)
Thread:
Lists: pgsql-fr-generale
>
> C'est à dire que la condition WHERE ne sert plus à grand chose (dans la
> mesure où a>0 tout le temps) dans mon exemple !
>
>
> test2=> explain select a+1 as id_disponible from nombres except select a
> from nombres order by id_disponible limit 1;
>                                         QUERY PLAN
>
> ---------------------------------------------------------------------------
>--------------- Limit  (cost=333.73..333.78 rows=1 width=4)
>    ->  SetOp Except  (cost=333.73..353.13 rows=388 width=4)
>          ->  Sort  (cost=333.73..343.43 rows=3880 width=4)
>                Sort Key: id_disponible
>                ->  Append  (cost=0.00..102.45 rows=3880 width=4)
>                      ->  Subquery Scan "*SELECT* 1"  (cost=0.00..53.65
> rows=1940 width=4)
>                            ->  Seq Scan on nombres  (cost=0.00..34.25
> rows=1940 width=4)
>                      ->  Subquery Scan "*SELECT* 2"  (cost=0.00..48.80
> rows=1940 width=4)
>                            ->  Seq Scan on nombres  (cost=0.00..29.40
> rows=1940 width=4)
> (9 lignes)

le probleme, c'est que ca aussi, ca doit faire un full table scan sur la table 
nombres... ca en fait meme 2 :)
c'est une requete qui est potentiellement longue si il y a beaucoup d'enreg.

je ne pense pas qu'il y ait une solution économique en perfs pour ce genre de 
traitements, du moins pas directement en SQL.

a mon avis, il serait plus performant, à chaque modification de la table de 
liste de nombres, de déclencher un trigger qui entretiendrait une table de 
liste d'elements libres...

le mieux étant de ne pas faire du tout ce remplissage, si possible. y a t'il 
un réel besoin fonctionnel à ce remplissage ? ne peut on pas prendre le max 
de la liste +1 (dans ce cas, utilisation d'une séquence...)

In response to

Responses

pgsql-fr-generale by date

Next:From: Jean-Paul ArgudoDate: 2006-06-03 09:53:47
Subject: Re: SQL pour trouver le premier libre?
Previous:From: Pierre CoudercDate: 2006-06-03 09:48:44
Subject: Re: SQL pour trouver le premier libre?

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