|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre régulier
![]() Inscription : avril 2004 Messages : 284 ![]() |
Bonjour,
Je suis en train de créer une base sous PostgreSQL 8.2 dans laquelle je stocke des séquence d'ADN, dont la longueur maximum est de 13 000 caractères environ. Je voudrais sélectionner les séquences communes d'une table temporaire avec ma table de séquences. Pour ceci, j'ai créé un index pour les séquences de chacune des tables : target_sequence idtarget_sequence SERIAL, sequence TEXT CREATE INDEX sequence_indx ON target_sequence(sequence); targettmp seq_ TEXT CREATE INDEX seq_indx ON targettmp(seq_); Je tente la commande : Code :
EXPLAIN SELECT sequence, seq_ FROM targettmp, target_sequence WHERE sequence = seq_ ![]() Apparement les index ne sont pas utilisés, les 2 tables ont 7 000 000 d'entrées chacune, si le parcourt est séquentiellement, la requête sera impossible. Pourriez-vous m'aiguiller là-dessus ? En vous remerciant, C. Tobini |
|
|
00
|
|
|
#2 | ||
|
Membre régulier
![]() Inscription : avril 2004 Messages : 284 ![]() |
Petite modification, j'ai tenté de saisir la totalité de mon fichier et des séquences trop longues ne sont pas acceptées en indexation.
Voici l'erreur : Code :
Auquel cas je vais me renseigner sur l'indexation full text. En vous remerciant, C. Tobini |
||
|
|
00
|
|
|
#3 |
|
Membre Expert
![]() Inscription : juin 2007 Messages : 1 497 ![]() |
Pour qu'il ait une chance d'utiliser l'index, il faut calculer les statistiques sur ta table : regarde du côté des commandes VACUUM et ANALYZE.
Essaie par exempleet regarde de nouveau le plan d'exécution pour voir si l'index sera utilisé. Par ailleurs ce n'est pas parce que tu as un index qu'il sera toujours préféré au "seq scan" par l'optimiseur, ça dépend du coût estimé |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com