PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 18/11/2018 20:05:58

ikit
Membre

Choix de l'index

Bonjour,

Je suis en train de concevoir une base de données qui va collecter des données génétiques, et je me demande quel index sera le plus efficace.

Le contexte: en génétique, on va analyser ce qu'on appelle les variants, c'est c'est à dire les parties du génome qui diffèrent par rapport à un autre génome de référence. En moyenne chacun de nous a son génome qui différent d'environ 1% par rapport à celui de référence, ce qui représente environs 1 million de variants par individu.
Un variant se représente sous la forme :
- chr : (chromosome) un entier entre 1 et 25
- pos : (position) un entier entre 1 et MAX_INT64
- ref : (référence) un varchar(32)
- alt : (alternative) un varchar(32)

ce sont ces 4 informations qui définissent de manière unique un variant. et donc c'est là dessus qu'il faut un index pour ensuite pouvoir faire des jointures avec les autres tables qui contiendrons des informations relatives à ces variants.

Qu'est-ce qui est le plus rapide pour chercher un variant : un index sur une nouvelle colonne "hash" qui serait une empreinte calculée avec les 4 autres ? ou bien un index composite sur chr, pos, ref, alt ?

Hors ligne

#2 18/11/2018 22:22:46

gleu
Administrateur

Re : Choix de l'index

S'il n'y a pas de recherches réalisées sur une composante, le hachage est certainement le plus intéressant, en supposant que ce hachage génère une valeur réellement unique pour une valeur particulière des 4 composantes.

Hors ligne

#3 18/11/2018 22:56:51

rjuju
Administrateur

Re : Choix de l'index

Il n'est pas nécessaire que le hachage donne une valeur unique, simplement suffisament discriminante pour que suffisamment peu de lignes aient besoin d'être revérifiées sur une égalité stricte des 4 colonnes.



Je suis d'accord avec Guillaume, un hashage devrait être bien plus efficace, mais cela suppose que vous n'avez besoin d'effectuer que des opérations d'égalité, qui porteront toujours sur l'intégralité des 4 champs (sauf à créer d'autres index).

Hors ligne

Pied de page des forums