Maison > base de données > tutoriel mysql > Postgres peut-il optimiser les requêtes Groupwise MAX sans une analyse complète de la table ?

Postgres peut-il optimiser les requêtes Groupwise MAX sans une analyse complète de la table ?

Linda Hamilton
Libérer: 2025-01-02 12:38:39
original
386 Les gens l'ont consulté

Can Postgres Optimize Groupwise MAX Queries Without a Full Table Scan?

Postgres peut-il optimiser le nombre maximum de requêtes de groupe sans analyser toutes les lignes ?

Postgres ne dispose pas d'une approche directe pour maximiser efficacement les requêtes de groupe, comme le montre le analyses de table complètes coûteuses observées dans les données données requête.

SOLUTION

Pour éviter des analyses excessives, envisagez d'utiliser une table de recherche pour les options et de la lier à la table des enregistrements via option_id. L'établissement d'une contrainte de clé étrangère entre ces tables permettrait de maintenir l'intégrité référentielle.

SQL POUR LA CRÉATION DE TABLE DE RECHERCHE :

CREATE TABLE options (
  option_id int PRIMARY KEY
, option    text UNIQUE NOT NULL
);
Copier après la connexion

Insertion de données à partir d'une table d'enregistrements existants :

INSERT INTO options
SELECT DISTINCT option_id, 'option' || option_id
FROM   records;
Copier après la connexion

Requête optimisée utilisant Sous-requête :

SELECT option_id, (SELECT max(id)
                   FROM   records
                   WHERE  option_id = o.option_id) AS max_id
FROM   options o
ORDER  BY 1;
Copier après la connexion

Alternativement, une sous-requête optimisée peut récupérer l'identifiant maximum :

SELECT option_id, (SELECT id
                   FROM   records
                   WHERE  option_id = o.option_id
                   ORDER  BY id DESC NULLS LAST
                   LIMIT  1) AS max_id
FROM   options o
ORDER  BY 1;
Copier après la connexion

Indice optimal pour les performances des requêtes :

CREATE INDEX ON records (option_id, id DESC NULLS LAST);
Copier après la connexion

Cette approche optimisée améliore considérablement l'exécution des requêtes en utilisant des analyses d'index ou même des analyses d'index uniquement pour la table de recherche et la table principale, ce qui entraîne des performances supérieures par rapport aux analyses de table complètes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal