Le Jeudi, 16 Novembre 2000 09.50, vous avez écrit :
> Bonjour,
Bonjour !
>
> C'est un peu hors sujet et veuillez m'en excuser MAIS j'en un truc sur le
> feu (pour être poli) et je ne suis pas un expert des grandes BD. Mes
> diverses tentatives se sont soldées par des échecs.
>
> Voila j'ai 3 tables de plus de 3M d'entrées sol_f, sol_i, sol_d
>
>           Table "sol_f"
>  Attribute |   Type   | Modifier
> -----------+----------+----------
>  id        | integer  |
>  ref       | text     |
>  sentpos   | smallint |
>  wordpos   | text     |

Je pense que dans ton cas, ce sont les champs texts qui gênent. Je n'ai pas 
regardé comment était traités ces champs par postgres, mais ils ralentissent 
une bonne partie des moteurs de DB avec lesquels j'ai travaillé. Regarde si 
tu ne peux pas les remplacer par des char(xx) (pour la colonne ref ?) ou, si 
tu ne les utilises pas beaucoup, essaye de les déplacer dans une autre table 
en gardant juste une référence dans cette table. (Je doute que cela soit ton 
cas... mais bon). 

> Mon problème est le temps que prend une requête aussi simple que:
>         select * from sol_f where id='3034';
> environ 3mn
Le * n'est pas optimal, mais cela ne change pas grand chose je pense, essaye 
de le remplacer par les colonnes dont tu as besoin... Et comme Marc l'a déjà 
dit : select id, ref, sentpos from sol_f where id=3034; <-- sans les quotes.

Pissinon, ben je pense que de creuser dans la voie de l'index qui semble ne 
pas marcher, c'est la meilleure façon d'améliorer la situation. (J'ai 
travaillé sur une base qu'on m'avait refilé sans index... Avec des indexes, 
la performance s'est vue mutliplié par un facteur 20 !)

Bonne chance !

Florian
--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question.

Répondre à