Re: Problème de temps de

From: Sébastien Lardière <seb(at)ouvaton(dot)org>
To: pgsql-fr-generale(at)postgresql(dot)org
Subject: Re: Problème de temps de
Date: 2005-05-02 07:53:07
Message-ID: 20050502095307.57dca8c5@localhost
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-fr-generale

On Sun, 1 May 2005 06:26:17 +0200
Philippe Dalléas <pdalleas(at)free(dot)fr> wrote:

> Bonjour,

Bonjour,

>
> J'entreprends de porter sous PostgreSQL les applications de gestion,
> que j'ai réalisées depuis plusieurs années sous d'autres SGBDR.
>
> Pour commencer, c'est l'application de comptabilité générale qui fait
> l'objet du portage. C'est aussi parce que j'y ai les plus gros
> fichiers en terme de nombre d'enregistrement.
>
> Le problème que je rencontre et auquel je ne comprends rien est
> l'extrême lenteur d'obtention des résultats après requête
>
> Le fichier concerné est celui des écritures. Il est ainsi construit à
> l'image exacte de celui dont il provient.
>
> CREATE TABLE ecritu (
> ecritu_societe DECIMAL(2,0) ,
> ecritu_periode VARCHAR(4),
> ecritu_date DATE ,
> ecritu_ligne VARCHAR(8) ,
> ecritu_piece VARCHAR(8) ,
> ecritu_code_piece VARCHAR(2),
> ecritu_ref_piece VARCHAR(12) ,
> ecritu_compte VARCHAR(8) ,
> ecritu_collectif VARCHAR(8),
> ecritu_journal VARCHAR(8) ,
> ecritu_central VARCHAR(1),
> ecritu_libelle VARCHAR(30),
> ecritu_montant DECIMAL(10,2),
> ecritu_sens VARCHAR(1) ,
> ecritu_lettre VARCHAR(2) ,
> ecritu_echeance DATE,
> ecritu_etat VARCHAR(2),
> ecritu_operateur DECIMAL(2,0),
> ecritu_paye DECIMAL(10,2),
> ecritu_trop_percu DECIMAL(10,2),
> ecritu_code_tiers VARCHAR(8),
> ecritu_no_tiers DECIMAL(6,0),
> ecritu_dev_compta VARCHAR(4),
> ecritu_dev_piece VARCHAR(4),
> ecritu_numerateur DECIMAL(8,4),
> ecritu_denominateur DECIMAL(8,4),
> ecritu_mnt_piece DECIMAL(10,2),
> PRIMARY KEY
> (ecritu_societe,ecritu_journal,ecritu_date,ecritu_piece,ecritu_ligne)
> );
> CREATE INDEX ecritu_index_2 ON ecritu
> (ecritu_societe,ecritu_compte,ecritu_date,ecritu_piece,ecritu_ligne);
> CREATE INDEX ecritu_index_3 ON ecritu
> (ecritu_societe,ecritu_compte,ecritu_lettre,ecritu_sens,ecritu_ref_piece);
>
> Le premier index a pour objet de lister date à date les écritures
> d'un journal auxiliaire d'une société.
>
> Le second a pour objet de lister date à date les écritures d'un
> compte d'une société.
>
> Et le troisième sert à produire les lettres de relance d'un groupe de
> comptes d'une société.
>

Il me semble que la première chose à faire est d'adapter les types de
données de ton schéma. Le nombre de champ de type decimal et varchar me
fait penser qu'il y a certainement moyen de faire mieux.

Par exemple, remplacer le decimal(10,2) par un float, et le décimal
(6,0) par integer. De meme, il est possible que certain varchar soit
plus rapide avec le type char, etant donné la longueur.

Vu la complexité des index, le pense que ça joue.

--
Sébastien Lardière

In response to

Browse pgsql-fr-generale by date

  From Date Subject
Next Message Hervé Piedvache 2005-05-02 08:30:08 Re: Problème de temps de réaction
Previous Message Philippe Dalléas 2005-05-01 04:26:17 Problème de temps de réaction