219 votes

Qu'est-ce que la double table dans Oracle ?

J'ai entendu des gens parler de cette table et je ne savais pas trop de quoi il s'agissait.

219voto

Sean McMains Points 9311

Il s'agit d'une sorte de table factice contenant un seul enregistrement, utilisée pour effectuer une sélection lorsque les données ne vous intéressent pas vraiment, mais que vous souhaitez plutôt obtenir les résultats d'une fonction système dans une instruction de sélection :

par exemple select sysdate from dual;

Ver http://www.adp-gmbh.ch/ora/misc/dual.html

78voto

mfx Points 4517

Il s'agit d'un tableau factice contenant un seul élément. Elle est utile car Oracle n'autorise pas les instructions telles que

 SELECT 3+4

Vous pouvez contourner cette restriction en écrivant

 SELECT 3+4 FROM DUAL

à la place.

67voto

bosnic Points 534

De Wikipedia

Histoire

La table DUAL a été créée par Chuck Weiss de la société Oracle afin de fournir une table pour la jonction dans les vues internes :

J'ai créé la table DUAL comme un objet sous-jacent dans le dictionnaire de données Oracle. Elle n'était pas destinée à être vue en tant que telle, mais plutôt à être utilisée dans une vue qui devait être interrogée. L'idée était de pouvoir faire un JOIN à la table DUAL et de créer deux lignes dans le résultat pour chaque ligne de votre table. Ensuite, en utilisant GROUP BY, la jointure résultante pourrait être résumée pour montrer la quantité de stockage pour l'étendue DATA et pour l'étendue INDEX (s). Le nom, DUAL, semblait approprié pour le processus de création d'une paire de lignes à partir d'une seule. [1]

Cela n'est peut-être pas évident, mais la table DUAL originale comportait deux lignes (d'où son nom). Aujourd'hui, elle ne comporte qu'une seule ligne.

Optimisation

À l'origine, DUAL était une table et le moteur de base de données effectuait des entrées/sorties sur le disque de la table lors de la sélection dans DUAL. Cette entrée/sortie sur disque était généralement une entrée/sortie logique (n'impliquant pas d'accès physique au disque) car les blocs de disque étaient généralement déjà mis en cache en mémoire. Il en résultait une grande quantité d'entrées-sorties logiques sur la table DUAL.

Les versions ultérieures de la base de données Oracle ont été optimisées et la base de données n'effectue plus d'entrées-sorties physiques ou logiques sur la table DUAL, même si celle-ci existe toujours.

21voto

smink Points 39640

Je pense que cet article de wikipedia peut aider à clarifier.

http://en.wikipedia.org/wiki/DUAL_table

La table DUAL est une table spéciale à une rangée. spéciale à une rangée, présente par défaut dans toutes les sont présentes par défaut dans toutes les installations de la base de données Oracle. Elle convient pour la sélection d'une pseudo-colonne telle que SYSDATE ou USER La table comporte une seule colonne VARCHAR2(1) appelée DUMMY, dont la valeur est "X".

10voto

Martin08 Points 4493

C'est la table spéciale dans Oracle. Je l'utilise souvent pour des calculs ou pour vérifier des variables système. Par exemple :

  • Select 2*4 from dual imprime le résultat du calcul
  • Select sysdate from dual imprime la date actuelle du serveur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X