Maison >base de données >tutoriel mysql >Comment les colonnes calculées stockées PostgreSQL peuvent-elles améliorer les performances des requêtes complexes ?

Comment les colonnes calculées stockées PostgreSQL peuvent-elles améliorer les performances des requêtes complexes ?

DDD
DDDoriginal
2025-01-11 18:56:47303parcourir

How Can PostgreSQL Stored Computed Columns Improve Performance for Complex Queries?

Colonne virtuelle pour stocker la requête

PostgreSQL propose de nombreuses façons d'incorporer des calculs complexes ou des sous-requêtes dans le schéma d'une table. Une approche consiste à créer une vue qui fournit une représentation virtuelle des données qui peut être interrogée comme une table normale. Cependant, la vue n'est pas stockée dans la base de données et est recalculée pour chaque requête, ce qui peut réduire l'efficacité des requêtes complexes fréquemment utilisées.

Une autre approche consiste à utiliser une colonne calculée stockée, qui vous permet de définir la valeur d'une colonne en fonction d'une expression qui contient d'autres colonnes ou sources de données externes. Une colonne calculée stockée est physiquement stockée dans la table et sa valeur est calculée et mise à jour chaque fois que les données sous-jacentes changent.

Pour utiliser des colonnes calculées stockées pour stocker une sous-requête en tant que pseudo-colonne, vous pouvez créer une fonction qui encapsule la sous-requête et la référencer dans la définition de la colonne calculée. Voici un exemple de la façon de procéder :

<code class="language-sql">CREATE FUNCTION col3(tbl_a)
RETURNS int8
LANGUAGE SQL STABLE
AS
$$
SELECT sum(colx)
FROM   tbl_b b
WHERE  b.a_id = .a_id
$$;

ALTER TABLE tbl_a ADD COLUMN col3 INT8 STORED AS col3(tbl_a);</code>

Cette méthode vous permet d'interroger les colonnes dérivées comme les colonnes normales :

<code class="language-sql">SELECT a_id, col1, col2, col3
FROM   tbl_a;</code>

Par rapport aux vues, l'avantage de l'utilisation de colonnes calculées stockées est que les valeurs des colonnes sont physiquement stockées et n'ont pas besoin d'être recalculées pour chaque requête, améliorant ainsi les performances des requêtes complexes fréquemment utilisées. De plus, les colonnes calculées stockées sont entièrement intégrées au schéma de table, ce qui leur permet d'être utilisées pour les index, les contraintes de clé étrangère et d'autres opérations de base de données.

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!

Déclaration:
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