[gull] Pas de parcours d'index postgresql

Félix Hauri felix at f-hauri.ch
Wed Jun 10 11:55:06 CEST 2009


Salut

On Wed, Jun 10, 2009 at 10:01:08AM +0200, Frédéric Benninger wrote:
> Bonjour,
> 
> Je constate que mon postgresql n'utilise pas l'index que j'ai mis sur
> le champ date quand j'utilise la fonction max.
> 
> SELECT max(date) FROM temperature;
> Durée totale d'exécution de la requête :130257 ms.
> 
> Jusqu'à présent je contournais le problème avec la requête suivante:
> 
> SELECT * FROM temperature ORDER BY date DESC LIMIT 1;
> Durée totale d'exécution de la requête :30 ms.
> 
> Il n'y a pas photo c'est quand même plus rapide....
M'oui, tu as raison, je viens d'expérimenter la chose, mais
de mémoire lors de mes premiers balbutiements avec Postgre et
le SQL, en général, je me suis apercu que ``max()'' n'existait
pas. Dès lors, je me suis habitué à construire mes requêtes
en ``pensant'' index et tri.

SELECT date FROM temperature ORDER BY date DESC LIMIT 1;

Une autre ``vacherie'' dans le genre est qu'en général, les
index sont construits sur la base du format précis dans lequel
la donnée est confinée (défénition de la colone).
càd que si tu dois pouvoir isoler rapidement des lignes qui
corresponde à une représentation particulière de la date,
ton index ne te sert à rien. Il faut créer un index spécifique,
voire une colone contenant *la* représentation que tu pourras
indexer. (voire autres moyens de représentation et méthodes
de pré-cache, les solutions sont très nombreuses et variables
d'un moteur SQL à l'autre, de SQLite à PostGres en passant pas
Oracle(TM) et MySQL...).

-- 
 Félix Hauri  -  <felix at f-hauri.ch>  -  http://www.f-hauri.ch


More information about the gull mailing list