Maison > base de données > tutoriel mysql > Quelle est la différence entre les tables temporaires globales et privées dans la gestion de base de données Oracle ?

Quelle est la différence entre les tables temporaires globales et privées dans la gestion de base de données Oracle ?

Linda Hamilton
Libérer: 2025-01-16 20:06:11
original
629 Les gens l'ont consulté

How Do Global and Private Temporary Tables Differ in Oracle Database Management?

Tables temporaires Oracle : examen plus approfondi du stockage de données transitoires

Dans le domaine de la gestion de bases de données relationnelles, la création de tables temporaires est une exigence courante dans divers scénarios de traitement de données. Dans Microsoft SQL Server, la syntaxe de création de tables temporaires à l'aide de l'instruction DECLARE est relativement simple. Cependant, dans la base de données Oracle, l'approche est différente et nécessite une exploration plus approfondie.

Oracle propose deux types de tables temporaires : les tables temporaires globales et les tables temporaires privées. Les tables temporaires globales sont représentées par le mot clé GLOBAL TEMP dans leurs instructions de création et sont visibles et accessibles sur plusieurs sessions utilisateur. D'autre part, les tables temporaires privées introduites dans Oracle 18c sont exclusives à la session de création et sont souvent utilisées pour l'optimisation des performances.

Créer une table temporaire globale

Pour créer une table temporaire globale dans Oracle, utilisez la syntaxe suivante :

<code class="language-sql">CREATE GLOBAL TEMPORARY TABLE 表名 (列定义)
ON COMMIT [DELETE ROWS | PRESERVE ROWS]</code>
Copier après la connexion

Par défaut, les données des tables temporaires globales sont supprimées lors de la validation de la transaction. Cependant, la clause ON COMMIT permet de préciser le comportement souhaité :

  • SUPPRIMER LES LIGNES : supprimez les données lors de la soumission.
  • PRÉSERVER LES LIGNES : les données restent même après la soumission, permettant aux autres sessions d'y accéder.

Considérons l'exemple suivant :

<code class="language-sql">CREATE GLOBAL TEMPORARY TABLE sales_temp (
  order_id NUMBER,
  quantity NUMBER
)
ON COMMIT PRESERVE ROWS;</code>
Copier après la connexion

Créer une table temporaire privée

Les tables temporaires privées, disponibles dans Oracle 18c et versions ultérieures, offrent des performances améliorées en stockant les données en mémoire au sein de la session de création. Ils sont créés selon la syntaxe suivante :

<code class="language-sql">CREATE PRIVATE TEMPORARY TABLE 表名 (列定义)</code>
Copier après la connexion

Voici un exemple :

<code class="language-sql">CREATE PRIVATE TEMPORARY TABLE order_temp AS
  SELECT order_id, product_id, quantity
  FROM orders
  WHERE order_date = '2023-08-22';</code>
Copier après la connexion

Remarques et alternatives

Bien que les tables temporaires puissent être utiles dans certaines situations, elles doivent être utilisées avec prudence. La création et la suppression fréquentes de tables temporaires peuvent entraîner une surcharge des performances de la base de données.

Une alternative aux tables temporaires consiste à utiliser des vues en ligne (CTE), qui vous permettent de créer un jeu de résultats temporaire dans une seule instruction SQL. Cette approche peut potentiellement améliorer les performances et réduire le besoin de création de tables temporaires distinctes.

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