dual
সারণী "কাজ করে" প্রায় ঠিক ভাবে অন্য কোন টেবিল কাজ করে: এটা একটা টেবিল যেখান থেকে আপনি রেকর্ড নির্বাচন করতে পারেন।
এর অর্থ, উদাহরণস্বরূপ, আপনি টেবিলটি বর্ণনা করতে পারেন। এখানে, এতে SQL*Plus
:
SQL> set lines 50
SQL> desc dual
Name Null? Typ
----------------------- -------- ----------------
DUMMY VARCHAR2(1)
সুতরাং, টেবিলের একটি কলাম রয়েছে, যার নাম dummy
একটি varchar2(1)
।
টেবিলটিতে নকশা অনুসারে একটি করে রেকর্ড রয়েছে (কমপক্ষে কেউ এটি দিয়ে বিভক্ত না হলে):
SQL> select count(*) from dual;
COUNT(*)
----------
1
সুতরাং, অর্ডার দিয়ে একই আচরণ পেতে dual2
আপনার সাথে আছে dual
, আপনি দ্বৈত মধ্যে এক রেকর্ড যুক্ত করতে হবে। আরও ভাল, এটি একটি create table as select
(সিটিএস) দিয়ে তৈরি করুন :
SQL> create table dual2 as select * from dual;
এখন, আপনার ক্যোয়ারী কাজ করে:
SQL> select 4*5 from dual2;
4*5
----------
20
এর আগে, আমি বলেছিলাম যে দ্বৈত প্রায় কোনও অন্য টেবিলের মতো কাজ করে। সুতরাং, কখন এটি অন্য কোনও টেবিলের মতো কাজ করে না?
এটি আলাদাভাবে আচরণ করে, যদি টেবিল থেকে কোনও মান নির্বাচিত না হয়। আবার, আপনার প্রশ্নের সাথে, আমি ওরাকলকে সেগুলি ব্যাখ্যা করতে দিয়েছি ...
SQL> set lines 150
SQL> explain plan for select 4*5 from dual2;
EXPLAIN PLAN ausgef³hrt.
... টেবিলটি কীভাবে অ্যাক্সেস করা হয় তা দেখতে:
SQL> select * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
---------------------------------------------------------------------------
Plan hash value: 3445655939
-------------------------------------------------------------------
| Id | Operation | Name | Rows | Cost (%CPU)| Time |
-------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 3 (0)| 00:00:01 |
| 1 | TABLE ACCESS FULL| DUAL2 | 1 | 3 (0)| 00:00:01 |
-------------------------------------------------------------------
এটি দেখা যায় যে বিবৃতিটি একটি কাজ full table access
করে dual2
।
এখন, একই জিনিস dual
:
SQL> explain plan for select 4*5 from dual;
EXPLAIN PLAN ausgef³hrt.
SQL> select * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
-------------------------------------------------------------------
Plan hash value: 1388734953
-----------------------------------------------------------------
| Id | Operation | Name | Rows | Cost (%CPU)| Time |
-----------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 2 (0)| 00:00:01 |
| 1 | FAST DUAL | | 1 | 2 (0)| 00:00:01 |
-----------------------------------------------------------------
এখানে dual
টেবিলটি আলাদাভাবে আচরণ করে: এর মান dummy
প্রয়োজন হয় না, সুতরাং fast dual
ডিস্কের প্রকৃত মানটি না পড়ার জন্য একটি ক্রিয়াকলাপ চালানো হয়।