Projet

Général

Profil

Development #63872

Requête lente récurrente

Ajouté par Pierre Ducroquet il y a environ 2 ans. Mis à jour il y a environ 2 ans.

Statut:
Nouveau
Priorité:
Normal
Assigné à:
-
Version cible:
-
Début:
13 avril 2022
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Non
Planning:
Non

Description

Repérée sur l'environnement hds:

SELECT id, user_id, receipt_time, status, page_no, anonymised, workflow_data, prefilling_data, id_display, workflow_roles, workflow_merged_roles_dict, workflow_roles_array, concerned_roles_array, actions_roles_array, tracking_code, backoffice_submission, submission_context, submission_agent_id, submission_channel, criticality_level, last_update_time, digests, user_label, .... FROM carddata_4_senior WHERE status != 'draft' AND digests->>'default' ILIKE '%marcel galarneau%' LIMIT '10';

Le critère sur status n'est pas exploitable : l'index ne ferait que perdre du temps puisque plus de 98% de la table a un status différent de 'draft'. Du coup, reste le critère sur digests->>'default'. Étant donné que default est présent dans toutes les entrées de la table, et est utilisé pour de telles requêtes, il est possible de réaliser une indexation dessus comme suit:

CREATE INDEX ON carddata_4_senior using gist((digests->>'default') gist_trgm_ops);

J'ignore par contre si cette requête est globalement fréquente ou si on est sur un cas spécifique.

Historique

#1

Mis à jour par Frédéric Péters il y a environ 2 ans

Oui ça peut être commun ça vaut la peine. (peut-être regarder à #60507 avant, si ça aide le patch).

#2

Mis à jour par Pierre Ducroquet il y a environ 2 ans

À noter : indexer un like '%%' comme ici requiert l'extension pg_trgm. Elle est dispo de base, mais faut l'avoir activée.

Formats disponibles : Atom PDF