PostgreSQL
La base de données la plus sophistiquée au monde.

Ouverture de session

Navigation

Contactez-nous

Administration du site :
"equipe chez postgresqlfr point org"

Contact presse :
"fr chez postgresql point org"

Contact association :
"bureau chez postgresqlfr point org"

Questions PostgreSQL :
 IRC :
  serveur irc.freenode.net
  canal #postgresqlfr

Recherche

Accéder aux archives

« Octobre 2008  
Lun Mar Mer Jeu Ven Sam Dim
  2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31  

Syndication

Flux XML

Sondage

Quelle est la version de PostgreSQL la plus répandue sur vos serveurs ?
8.3
10%
8.2
42%
8.1
40%
8.0
2%
7.4
6%
7.3 ou antérieure
0%
Nombre de votes: 48

utilisation des index et timestamp

Technique - optimisation | utilisation des index et timestamp

Par mathieu le 09/01/2006 - 19:58

Bonjour,

J'essaye un peu d'otpimiser les requĂȘtes sur ma base mais il semble que dans certains cas postgres ne veut pas utiliser les index:

requĂȘte 1:
explain delete from suiviscan where date_creation <= ( current_timestamp - (interval '60 days')); NOTICE: QUERY PLAN:

Seq Scan on suiviscan (cost=0.00..55184.98 rows=448116 width=6)

requĂȘte 2:
explain delete from suiviscan where date_creation <= ( current_timestamp - (interval '60 days'))::timestamp with time zone;
NOTICE: QUERY PLAN:

Seq Scan on suiviscan (cost=0.00..55184.98 rows=448116 width=6)

requĂȘte 3:
explain delete from suiviscan where date_creation <= '2005-11-10 18:44:29';
NOTICE: QUERY PLAN:

Index Scan using idx_scan_deb on suiviscan (cost=0.00..12334.15 rows=330667 width=6)

La date a été obtenue via select (current_timestamp - (interval '60 days'));

L'index n'est utilisĂ© que pour la reqĂȘte 3. Je ne comprend donc pas le comportement. Est ce qu'il ne fait pas le calcul avant ? Est ce un problĂšme de cast ?

Le champ date_creation est du type suivant:
date_creation | timestamp with time zone | default ('now'::text)::timestamp(6) with time zone

Mon index est le suivant:
Index "idx_scan_deb"
Column | Type
---------------+--------------------------
date_creation | timestamp with time zone
btree

Merci de vos réponses.

Mathieu

Options d'affichage des commentaires

Sélectionnez la méthode d'affichage des commentaires que vous préférez, puis cliquez sur "Sauvegarder les paramÚtres" pour activer vos changements.

D'aprés ce que je sais sur d

viadou_meleme/ = 10 Janvier, 2006 - 16:38

D'aprĂ©s ce que je sais sur d'autres base de donnĂ©es si on met des fonctions (current_timestamp dans votre cas) dans les clauses where, les optimizeurs n'utilisent plus les index. Ceci expliquerait peut-ĂȘtre le fait que quand vous mettez une constante, l'index est utilisĂ© et ne l'est pas dans le cas oĂč vous utiliser current_timestamp.


© PostgreSQLFr, tous droits rĂ©servĂ©s.
Site déclaré à la CNIL sous le numéro 1074678, conformément à la Loi en vigueur.