DUAL tabula ir speciāla vienas rindas tabula, kas pieejama pēc noklusējuma visās Oracle datubāzēs. Tā ir noderīga tādu pseidokolonnu datu atlasīšanai kā piemēram - SYSDATE vai USER. Tabulai ir viena kolonna ar datu tipu VARCHAR2(1), nosaukumu DUMMY, kuras vērtība ir X.

Izmantošanas piemērs labot šo sadaļu

ORACE SQL sintaksē nepieciešams izmantot FROM klauzulu, bet dažiem vaicājumiem nav nepieciešams izmanto tabulas - DUAL var tikt viegli izmantots šādos gadījumos.

SELECT 1+1
FROM DUAL;

SELECT SYSDATE
FROM DUAL;

SELECT USER 
FROM DUAL;

Vēsture labot šo sadaļu

DUAL tabulu izveidoja Čārlzs Veiss (Charles Weiss) no Oracle kompānijas, tabulu iekšējo skatu apvienošanas nodrošināšanai:
Es izveidoju DUAL tabulu kā pamatobjektu Oracle Datu Vārdnīcā (Oracle Data Dictionary). To nebija paredzēts apskatīt atsevišķi, bet izmantot apstrādājama skata iekšienē. Ideja bija, ka Jūs varētu izpildīt JOIN ar DUAL tabulu un rezultātā izveidot divas rindas katrai Jūsu tabulas rindai. Pēc tam izmantojot GROUP BY rezultāta apkopojumu, var parādīt datu apjoma un indeksu apjoma izmantoto atmiņas daudzumu. Vārds "DUAL" šķita piemērots procesam pāra veidošanai no vienas rindas.[1] Sākotnēji DUAL tabulai bija divas rindas, bet pēc tam vairs tikai viena rinda.

Optimizācija labot šo sadaļu

DUAL sākotnēji bija tabula un datubāzes dzinējs, kurš veica diska operācijas, lai atlasītu datus no DUAL. Šī diska operācija parasti bija virtuāla (bez piekļuves fiziskam diskam), jo diska bloki jau bija sakešoti atmiņā. Līdz ar to bija liels virtuālo diskoperāciju daudzums uz DUAL tabulu. Vēlākajās Oracle datubāzes versijas tika optimizētas un datubāze vairs neveic diskoperācijas ar DUAL tabulu, kaut arī patiesībā DUAL tabula joprojām eksistē.

Citās datubāžu sistēmās labot šo sadaļu

MySQL ļauj izmantot DUAL vaicājumos kuriem nevajag nekādus datus no tabulām.[2]

Atsauces labot šo sadaļu

  1. «Oracle Magazine article describing the history of DUAL». Arhivēts no oriģināla, laiks: 2004. gada 5. decembrī. Skatīts: 2004. gada 5. decembrī.
  2. MySQL :: MySQL 5.0 Reference Manual :: 13.2.8 SELECT Syntax