Optimiser vos requêtes avec les indexes Partial Postgresql

bonjour

Un des objectifs des bases de données est de stocker l’information tout en l’organisant de manière à pouvoir y accéder rapidement  il y a plusieurs manières d’accéder à l’information. Pour accéder à une ligne donnée d’une table

Postgresql dispose de plusieurs solutions que nous expliquerons sous peu. Citons parmi celles-ci par exemple le « parcours complet de table » ou « seq scan« , le « parcours d’index » ou « Seq index » … ou aussi Index partiels  c’est ce dont nous allons parler aujourd’hui

Un index partiel est un index construit sur un sous-ensemble d’une table ; le sous-ensemble est défini par une expression conditionnelle (appelée prédicat de l’index partiel). L’index ne contient des entrées que pour les lignes de la table qui satisfont au prédicat. Les index partiels sont une fonctionnalité spécialisée, mais ils trouvent leur utilité dans de nombreuses situations.

Un index partiel est utile pour les conditions where fréquentes qui utilisent des valeurs constantes

voyant cette petit exemple

with cte as(select row_number()over(partition by matricule order by date_capture)as classement ,person_id,matricule,template,date_capture,First_name,last_name from finger_print fp INNER JOIN person p
on fp.person_id=p.id
where finger_type='Segma'
)select * from cte
where classement=1
order by date_capture desc

le plan d’execution du cette requéte avec aucun index montre une opération de type scan_table avec un coût d’exécution de 2820ms

Sans titre

commençons a jouer avec les choses en ajoutant cette petit index

create index indexe_partiel on finger_print(finger_type)
where finger_type=’Segma’

ci joint le nouveau plan exécution, régénérer et le temps a été minimiser vers 213ms

et l’opération scan_table a été remplacer par  un scan_index et non pas n’importe quel index mais un index partiel

Sans titre2

Une base de données peut utiliser un index partiel à chaque fois qu’une clausewhere apparaît dans une requête

bonne optimisation

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.