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
Views: Raw Message | Whole Thread | Download mbox | Resend email
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

Browse pgsql-fr-generale by date

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