J'ai entendu des gens parler de cette table et je ne savais pas trop de quoi il s'agissait.
Réponses
Trop de publicités?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;
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.
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".