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 ?
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!