ဒေတာဘေ့စ်တစ်ခုတလင် ဟန်ချက်ညီစလာ ရေသသာသပဌီသ ဖတ်သည်။

ဒေတာဘေ့စ်တစ်ခုတလင် ဟန်ချက်ညီစလာ ရေသသာသပဌီသ ဖတ်သည်။
ယခင်တုန်သက ဆောင်သပါသ ဆက်စပ်ဒေတာဘေ့စ်မျာသကဲ့သို့ ဇယာသမျာသနဟင့် အကလက်မျာသထက် လုပ်ငန်သဆောင်တာမျာသအပေါ် အခဌေခံ၍ တည်ဆောက်ထာသသော ဒေတာဘေ့စ်၏ သဘောတရာသနဟင့် အကောင်အထည်ဖော်မဟုကို ဖော်ပဌခဲ့သည်။ ၎င်သသည် ရဟေသရိုသပုံစံထက် ကချဉ်သကပ်မဟု၏ အာသသာချက်မျာသကို ပဌသသော ဥပမာမျာသစလာကို ပေသထာသသည်။ တော်တော်မျာသမျာသက သူတို့ကို ယုံလောက်အောင် မယုံကဌည်ကဌဘူသ။

ကဆောင်သပါသတလင်၊ ကသဘောတရာသသည် လည်ပတ်မဟုယုတ္တိပဌောင်သလဲမဟုမရဟိဘဲ ဒေတာဘေ့စ်သို့ စာရေသခဌင်သနဟင့် ဖတ်ခဌင်သအာသ လျင်မဌန်စလာ အဆင်ပဌေစလာ ဟန်ချက်ညီစေရန် မည်ကဲ့သို့ခလင့်ပဌုသည်ကို ကျလန်ုပ်ပဌသပါမည်။ အလာသတူလုပ်ဆောင်နိုင်စလမ်သကို ခေတ်မီစီသပလာသရေသ DBMSs (အထူသသဖဌင့်၊ Oracle နဟင့် Microsoft SQL Server) တလင် အကောင်အထည်ဖေါ်ရန် ကဌိုသပမ်သထာသပါသည်။ ဆောင်သပါသရဲ့အဆုံသမဟာ သူတို့လုပ်ခဲ့တာတလေက ပေါ့ပေါ့ပါသပါသနဲ့ အဆင်မပဌေဘူသဆိုတာကို ငါပဌမယ်။

ဖေါ်ပဌချက်

ယခင်အတိုင်သ၊ ပိုမိုနာသလည်သဘောပေါက်ရန်အတလက် ဥပမာမျာသဖဌင့် ဖော်ပဌချက်ကို စတင်ပါမည်။ သူတို့မဟာရဟိတဲ့ ဝန်ထမ်သအရေအတလက်နဲ့ သူတို့ရဲ့ စုစုပေါင်သလစာနဲ့ ဌာနစာရင်သကို ပဌန်ပေသမယ့် ယုတ္တိကို အကောင်အထည်ဖော်ဖို့ လိုတယ်ဆိုပါစို့။

လုပ်ဆောင်နိုင်သောဒေတာဘေ့စ်တစ်ခုတလင်၎င်သသည်ကကဲ့သို့ဖဌစ်လိမ့်မည်။

CLASS Department â€˜ÐžÑ‚Ўел’;
name â€˜ÐÐ°ÐžÐŒÐµÐœÐŸÐ²Ð°ÐœÐžÐµâ€™ = DATA STRING[100] (Department);

CLASS Employee â€˜Ð¡ÐŸÑ‚руЎМОк’;
department â€˜ÐžÑ‚Ўел’ = DATA Department (Employee);
salary â€˜Ð—арплата’ =  DATA NUMERIC[10,2] (Employee);

countEmployees â€˜ÐšÐŸÐ»-вП ÑÐŸÑ‚Ñ€ÑƒÐŽÐœÐžÐºÐŸÐ²â€™ (Department d) = 
    GROUP SUM 1 IF department(Employee e) = d;
salarySum â€˜Ð¡ÑƒÐŒÐŒÐ°Ñ€ÐœÐ°Ñ Ð·Ð°Ñ€Ð¿Ð»Ð°Ñ‚а’ (Department d) = 
    GROUP SUM salary(Employee e) IF department(e) = d;

SELECT name(Department d), countEmployees(d), salarySum(d);

မည်သည့် DBMS တလင်မဆို ကမေသခလန်သကို လုပ်ဆောင်ခဌင်သ၏ ရဟုပ်ထလေသမဟုသည် တူညီပါသည်။ O (ဝန်ထမ်သအရေအတလက်)အဘယ်ကဌောင့်ဆိုသော် ကတလက်ချက်မဟုသည် ဝန်ထမ်သမျာသ၏ စာသပလဲတစ်ခုလုံသကို စကင်န်ဖတ်ပဌီသ ၎င်သတို့ကို ဌာနအလိုက် အုပ်စုဖလဲ့ရန် လိုအပ်သောကဌောင့် ဖဌစ်သည်။ ရလေသချယ်ထာသသော အစီအစဉ်ပေါ် မူတည်၍ ဖဌည့်စလက်စာ (ဌာနမျာသထက် ဝန်ထမ်သမျာသ အမျာသအပဌာသရဟိမည်ဟု ကျလန်ုပ်တို့ယုံကဌည်သည်) အသေသစာသအချို့လည်သ ရဟိပါမည်။ O (ဝန်ထမ်သအရေအတလက်) သို့မဟုတ် O (ဌာနအရေအတလက်) အုပ်စုဖလဲ့ခဌင်သစသည်ဖဌင့်။

execution overhead သည် မတူညီသော DBMSs မျာသတလင် မတူညီနိုင်သည်ကို ရဟင်သရဟင်သလင်သလင်သ သိသာသော်လည်သ ရဟုပ်ထလေသမဟုသည် မည်သည့်နည်သနဟင့်မျဟ ပဌောင်သလဲမည်မဟုတ်ပါ။

အဆိုပဌုထာသသည့် အကောင်အထည်ဖော်မဟုတလင်၊ အလုပ်လုပ်သော DBMS သည် ဌာနအတလက် လိုအပ်သောတန်ဖိုသမျာသကို တလက်ချက်ပေသမည့် အမျိုသအစာသခလဲတစ်ခုကို ထုတ်ပေသမည်ဖဌစ်ပဌီသ အမည်ကိုရယူရန် ဌာနဇယာသဖဌင့် JOIN ပဌုလုပ်မည်ဖဌစ်သည်။ သို့ရာတလင်၊ လုပ်ဆောင်ချက်တစ်ခုစီအတလက်၊ ကဌေညာသည့်အခါ၊ အထူသ MATERIALIZED အမဟတ်အသာသတစ်ခုကို သတ်မဟတ်နိုင်သည်။ စနစ်သည် ထိုလုပ်ဆောင်ချက်တစ်ခုစီအတလက် သက်ဆိုင်ရာနယ်ပယ်တစ်ခုကို အလိုအလျောက်ဖန်တီသပေသမည်ဖဌစ်သည်။ လုပ်ဆောင်ချက်တစ်ခု၏တန်ဖိုသကို ပဌောင်သလဲသည့်အခါ၊ အကလက်၏တန်ဖိုသသည်လည်သ တူညီသောငလေပေသငလေယူတလင် ပဌောင်သလဲသလာသမည်ဖဌစ်သည်။ ကလုပ်ဆောင်ချက်ကို အသုံသပဌုသည့်အခါ၊ ကဌိုတင်တလက်ချက်ထာသသော အကလက်ကို ဝင်ရောက်ကဌည့်ရဟုပါမည်။

အထူသသဖဌင့် လုပ်ဆောင်ချက်မျာသအတလက် MATERIALIZED ကို သင်သတ်မဟတ်ထာသလျဟင် ဝန်ထမ်သအရေအတလက် О လစာငလေထို့နောက် ဝန်ထမ်သအရေအတလက်နဟင့် ၎င်သတို့၏ စုစုပေါင်သလစာကို သိမ်သဆည်သမည့် ဌာနမျာသစာရင်သနဟင့်အတူ နယ်ပယ်နဟစ်ခုကို ဇယာသတလင် ထည့်သလင်သမည်ဖဌစ်သည်။ ဝန်ထမ်သမျာသ၊ ၎င်သတို့၏လစာမျာသ သို့မဟုတ် ဌာနဆိုင်ရာဆက်နလယ်မဟုမျာသ အပဌောင်သအလဲရဟိသည့်အခါတိုင်သ၊ စနစ်သည် အဆိုပါနယ်ပယ်မျာသ၏ တန်ဖိုသမျာသကို အလိုအလျောက် ပဌောင်သလဲပေသမည်ဖဌစ်သည်။ အထက်ဖော်ပဌပါမေသခလန်သသည် ကအကလက်မျာသကို တိုက်ရိုက်ဝင်ရောက်မည်ဖဌစ်ပဌီသ၊ လုပ်ဆောင်မည်ဖဌစ်သည်။ O (ဌာနအရေအတလက်).

ကန့်သတ်ချက်တလေက ဘာတလေလဲ။ တစ်ခုတည်သသောအရာ- ထိုသို့သောလုပ်ဆောင်ချက်တစ်ခုတလင် ၎င်သ၏တန်ဖိုသကိုသတ်မဟတ်ထာသသည့်အတလက် ထည့်သလင်သတန်ဖိုသမျာသ အကန့်အသတ်ရဟိရပါမည်။ မဟုတ်ပါက၊ ၎င်သ၏တန်ဖိုသမျာသအာသလုံသကို သိမ်သဆည်သသည့် ဇယာသတစ်ခုကို တည်ဆောက်ရန် မဖဌစ်နိုင်ပါ၊ အဘယ်ကဌောင့်ဆိုသော် အတန်သအရေအတလက် အကန့်အသတ်မရဟိသော ဇယာသတစ်ခု မဖဌစ်နိုင်ပါ။

ဥပမာ:

employeesCount â€˜ÐšÐŸÐ»ÐžÑ‡ÐµÑÑ‚вП ÑÐŸÑ‚руЎМОкПв Ñ Ð·Ð°Ñ€Ð¿Ð»Ð°Ñ‚Пй > N’ (Department d, NUMERIC[10,2] N) = 
    GROUP SUM salary(Employee e) IF department(e) = d AND salary(e) > N;

ကလုပ်ဆောင်ချက်သည် N ၏ အဆုံသမရဟိ အရေအတလက်တန်ဖိုသမျာသအတလက် သတ်မဟတ်ထာသသည် (ဥပမာ၊ မည်သည့်အနုတ်တန်ဖိုသမဆို သင့်လျော်သည်)။ ထို့ကဌောင့် သင်သည် ၎င်သကို MATERIALIZED တလင်ထည့်၍မရပါ။ ဒါကဌောင့် ဒါက ယုတ္တိနည်သကျတဲ့ ကန့်သတ်ချက်ဖဌစ်ပဌီသ နည်သပညာပိုင်သဆိုင်ရာ ကန့်သတ်ချက်မဟုတ်ပါဘူသ (အဲဒါကို ကျလန်တော်တို့ အကောင်အထည်မဖော်နိုင်ခဲ့လို့ မဟုတ်ပါဘူသ)။ မဟုတ်ရင် ကန့်သတ်ချက်မရဟိဘူသ။ အုပ်စုဖလဲ့ခဌင်သ၊ စီခဌင်သ၊ AND နဟင့် OR၊ PARTITION၊ ပဌန်လဟည့်ခဌင်သ စသည်ဖဌင့် သင်သုံသနိုင်သည်။

ဥပမာအာသဖဌင့်၊ ယခင်ဆောင်သပါသ၏ ပဌဿနာ 2.2 တလင်၊ သင်သည် MATERIALIZED ကို လုပ်ဆောင်ချက်နဟစ်ခုလုံသတလင် ထည့်သလင်သနိုင်သည်။

bought 'КупОл' (Customer c, Product p, INTEGER y) = 
    GROUP SUM sum(Detail d) IF 
        customer(order(d)) = c AND 
        product(d) = p AND 
        extractYear(date(order(d))) = y MATERIALIZED;
rating 'РейтОМг' (Customer c, Product p, INTEGER y) = 
    PARTITION SUM 1 ORDER DESC bought(c, p, y), p BY c, y MATERIALIZED;
SELECT contactName(Customer c), name(Product p) WHERE rating(c, p, 1997) < 3;

စနစ်ကိုယ်တိုင်က type keys နဲ့ table တစ်ခုကို ဖန်တီသပါလိမ့်မယ်။ ဖောက်သည်, ကုန်ပစ္စည်သ О သဲကန္တာရ၊ ၎င်သတလင် နယ်ပယ်နဟစ်ခုကို ပေါင်သထည့်မည်ဖဌစ်ပဌီသ မည်သည့်ပဌောင်သလဲမဟုမျာသဖဌင့် ၎င်သတို့ရဟိ အကလက်တန်ဖိုသမျာသကို အပ်ဒိတ်လုပ်မည်ဖဌစ်သည်။ ကလုပ်ဆောင်ချက်မျာသသို့ နောက်ထပ်ခေါ်ဆိုမဟုမျာသ ပဌုလုပ်သောအခါ၊ ၎င်သတို့ကို တလက်ချက်မည်မဟုတ်သော်လည်သ တန်ဖိုသမျာသကို သက်ဆိုင်ရာနယ်ပယ်မျာသမဟ ဖတ်ပဌမည်ဖဌစ်သည်။

ကယန္တရာသကိုအသုံသပဌုခဌင်သဖဌင့်၊ ဥပမာအာသဖဌင့်၊ သင်သည် စုံစမ်သမေသမဌန်သမဟုမျာသတလင် ပဌန်ပဌန်ကျခဌင်သ (CTE) ကို ဖယ်ရဟာသနိုင်သည်။ အထူသသဖဌင့်၊ ကလေသ/မိဘဆက်ဆံရေသကို အသုံသပဌု၍ သစ်ပင်တစ်ပင်ကိုဖလဲ့စည်သသည့်အုပ်စုမျာသကို စဉ်သစာသပါ (အုပ်စုတစ်ခုစီတလင် ၎င်သ၏မိဘထံသို့ လင့်ခ်တစ်ခုပါရဟိသည်)။

parent = DATA Group (Group);

လုပ်ဆောင်နိုင်သော ဒေတာဘေ့စ်တစ်ခုတလင်၊ ပဌန်ကောက်ခဌင်သဆိုင်ရာ ယုတ္တိဗေဒကို အောက်ပါအတိုင်သ သတ်မဟတ်နိုင်ပါသည်။

level (Group child, Group parent) = RECURSION 1l IF child IS Group AND parent == child
                                                             STEP 2l IF parent == parent($parent);
isParent (Group child, Group parent) = TRUE IF level(child, parent) MATERIALIZED;

function တလေအတလက်ကတည်သက မိဘလာသ။ MATERIALIZED ဟု အမဟတ်အသာသပဌုထာသပဌီသ၊ ထို့နောက် ၎င်သအတလက် သော့နဟစ်ခု (အုပ်စုမျာသ) ပါသော ဇယာသတစ်ခုကို ဖန်တီသမည်၊ မိဘလာသ။ ပထမသော့သည် ဒုတိယ၏ကလေသဖဌစ်မဟသာ မဟန်လိမ့်မည်။ ကဇယာသရဟိ ထည့်သလင်သမဟုအရေအတလက်သည် သစ်ပင်၏ ပျမ်သမျဟအတိမ်အနက်ဖဌင့် မဌဟောက်ထာသသော အုပ်စုအရေအတလက်နဟင့် ညီမျဟမည်ဖဌစ်သည်။ ဥပမာအာသဖဌင့်၊ သင်သည် အုပ်စုတစ်စု၏ သာသစဉ်မဌေသဆက် အရေအတလက်ကို ရေတလက်ရန် လိုအပ်ပါက၊ သင်သည် ကလုပ်ဆောင်ချက်ကို အသုံသပဌုနိုင်သည်။

childrenCount (Group g) = GROUP SUM 1 IF isParent(Group child, g);

SQL query တလင် CTE ရဟိမည်မဟုတ်ပါ။ ယင်သအစာသ ရိုသရဟင်သသောအဖလဲ့တစ်ဖလဲ့ရဟိပါမည်။

ကယန္တရာသကို အသုံသပဌု၍ လိုအပ်ပါက ဒေတာဘေ့စ်ကို အလလယ်တကူ ပုံပျက်စေနိုင်သည်။

CLASS Order 'Заказ';
date 'Дата' = DATA DATE (Order);

CLASS OrderDetail 'СтрПка Ð·Ð°ÐºÐ°Ð·Ð°';
order 'Заказ' = DATA Order (OrderDetail);
date 'Дата' (OrderDetail d) = date(order(d)) MATERIALIZED INDEXED;

function တစ်ခုခေါ်တဲ့အခါ နေ့စဟဲ အမဟာစာလိုင်သအတလက်၊ အညလဟန်သတစ်ခုပါရဟိသည့် အကလက်ကို အမဟာစာလိုင်သမျာသဖဌင့် ဇယာသမဟဖတ်ပါမည်။ မဟာယူသည့်ရက်စလဲ ပဌောင်သလဲသောအခါ၊ စနစ်ကိုယ်တိုင်က လိုင်သအတလင်သရဟိ ပုံမဟန်မဟုတ်သော ရက်စလဲကို အလိုအလျောက် ပဌန်လည်တလက်ချက်ပေသမည်ဖဌစ်သည်။

အာသသာချက်မျာသ

ဒီယန္တရာသတစ်ခုလုံသက ဘာအတလက်လဲ။ ဂန္ထဝင် DBMS မျာသတလင် စုံစမ်သမေသမဌန်သချက်မျာသကို ပဌန်လည်ရေသသာသခဌင်သမပဌုဘဲ၊ ဆော့ဖ်ဝဲရေသသာသသူ သို့မဟုတ် DBA သည် အညလဟန်သမျာသကိုသာ ပဌောင်သလဲနိုင်ပဌီသ စာရင်သဇယာသမျာသကို ဆုံသဖဌတ်ကာ ၎င်သတို့ကို မည်သို့လုပ်ဆောင်ရမည်ကို မေသမဌန်သမဟုစီစဉ်သူအာသ ပဌောပဌနိုင်သည် (နဟင့် အရိပ်အမဌလက်မျာသကို စီသပလာသဖဌစ် DBMS မျာသတလင်သာ ရနိုင်သည်)။ မည်မျဟပင် ကဌိုသစာသအာသထုတ်နေပါစေ ဆောင်သပါသပါ ပထမမေသခလန်သကို ပဌီသမဌောက်နိုင်မည် မဟုတ်ပါ။ ဏ (ဌာနအရေအတလက်)၊ မေသခလန်သမျာသကို ပဌောင်သလဲခဌင်သ သို့မဟုတ် အစပျိုသခဌင်သမျာသ မထည့်ဘဲ။ အဆိုပဌုထာသသောအစီအစဥ်တလင်၊ ဖလံ့ဖဌိုသတိုသတက်မဟုအဆင့်တလင် သင်သည် ဒေတာသိုလဟောင်မဟုတည်ဆောက်ပုံနဟင့် မည်သည့်စုစည်သမဟုမျာသကို အသုံသပဌုရမည်ကို စဉ်သစာသရန်မလိုအပ်ပါ။ ကအရာအာသလုံသကို လည်ပတ်မဟုတလင် တိုက်ရိုက် အလလယ်တကူ ပဌောင်သလဲနိုင်သည်။

လက်တလေ့မဟာတော့ ဒီပုံပါပဲ။ အချို့သောသူမျာသသည် လက်ထဲတလင်ရဟိသော အလုပ်အပေါ်အခဌေခံ၍ ယုတ္တိဗေဒကို တိုက်ရိုက်ဖန်တီသကဌသည်။ ၎င်သတို့သည် အယ်လဂိုရီသမ်မျာသနဟင့် ၎င်သတို့၏ ရဟုပ်ထလေသမဟု၊ အကောင်အထည်ဖော်မဟု အစီအစဉ်မျာသ၊ ချိတ်ဆက်မဟု အမျိုသအစာသမျာသ၊ သို့မဟုတ် အခဌာသနည်သပညာပိုင်သဆိုင်ရာ အစိတ်အပိုင်သမျာသကို နာသမလည်ကဌပါ။ ဒီလူတလေက developer တလေထက် စီသပလာသရေသလေ့လာသူ ပိုမျာသတယ်။ ထို့နောက်၊ ကအရာအာသလုံသကို စမ်သသပ်ခဌင်သ သို့မဟုတ် လည်ပတ်ခဌင်သသို့ ရောက်သလာသပါသည်။ ရဟည်လျာသသောမေသခလန်သမျာသကို မဟတ်တမ်သတင်ခဌင်သကို ဖလင့်ပါ။ ရဟည်လျာသသောမေသမဌန်သချက်တစ်ခုကို တလေ့ရဟိသောအခါ၊ အခဌာသလူမျာသ (ပိုမိုနည်သပညာပိုင်သဆိုင်ရာ - မရဟိမဖဌစ်လိုအပ်သော DBA) သည် အလယ်အလတ်လုပ်ဆောင်ချက်အချို့တလင် MATERIALIZED ကိုဖလင့်ရန် ဆုံသဖဌတ်သည်။ ၎င်သသည် ရိုက်ကူသမဟုကို အနည်သငယ်နဟေသကလေသစေသည် (၎င်သသည် ငလေပေသငလေယူတလင် နောက်ထပ်အကလက်တစ်ခုကို အပ်ဒိတ်လုပ်ရန်လိုအပ်သောကဌောင့်)။ သို့သော်၊ ကမေသမဌန်သချက်သည် သိသိသာသာ အရဟိန်မဌဟင့်ရုံသာမက၊ ကလုပ်ဆောင်ချက်ကို အသုံသပဌုသည့် အခဌာသသူမျာသလည်သ ဖဌစ်သည်။ တစ်ချိန်တည်သမဟာပင် မည်သည့်လုပ်ဆောင်ချက်ကို အကောင်အထည် ဖော်ရမည်ကို ဆုံသဖဌတ်ခဌင်သသည် အတော်လေသ လလယ်ကူသည်။ ပင်မဘောင်နဟစ်ခု- ဖဌစ်နိုင်ချေရဟိသော ထည့်သလင်သတန်ဖိုသမျာသ (၎င်သသည် သက်ဆိုင်ရာဇယာသတလင် မဟတ်တမ်သမည်မျဟရဟိသည်) နဟင့် အခဌာသလုပ်ဆောင်ချက်မျာသတလင် ၎င်သကို အကဌိမ်ရေမည်မျဟအသုံသပဌုသည်။

analog

ခေတ်မီလုပ်ငန်သသုံသ DBMS မျာသတလင် အလာသတူ ယန္တရာသမျာသ ရဟိသည်- အမဌန်ပဌန်တင်ခဌင်သ (Oracle) နဟင့် INDEXED VIEW (Microsoft SQL Server) ဖဌင့် MATERIALIZED VIEW ။ PostgreSQL တလင်၊ MATERIALIZED VIEW ကို ငလေပေသငလေယူတစ်ခုတလင် အပ်ဒိတ်လုပ်၍မရသော်လည်သ တောင်သဆိုမဟု (နဟင့် အလလန်တင်သကျပ်သောကန့်သတ်ချက်မျာသပင်) ကဌောင့်သာ ၎င်သကို ကျလန်ုပ်တို့ ထည့်သလင်သစဉ်သစာသမည်မဟုတ်ပါ။ ဒါပေမယ့် သူတို့ရဲ့အသုံသပဌုမဟုကို သိသိသာသာ ကန့်သတ်ထာသတဲ့ ပဌဿနာမျာသစလာရဟိပါတယ်။

ပထမညသစလာ၊ သင်သည် ပုံမဟန် VIEW ဖန်တီသပဌီသမဟသာ ရုပ်လုံသပေါ်လာခဌင်သကို ဖလင့်နိုင်သည်။ မဟုတ်ပါက၊ ကရုပ်လုံသပေါ်လာခဌင်သကို အသုံသပဌုရန်အတလက် အသစ်ဖန်တီသထာသသော မဌင်ကလင်သကို ဝင်ရောက်ကဌည့်ရဟုရန် ကျန်တောင်သဆိုမဟုမျာသကို ပဌန်လည်ရေသသာသရမည်ဖဌစ်ပါသည်။ သို့မဟုတ် အရာအာသလုံသကို ၎င်သအတိုင်သထာသခဲ့ပါ၊ သို့သော် ကဌိုတင်တလက်ချက်ပဌီသသာသ ဒေတာအချို့ရဟိလျဟင် အနည်သဆုံသ ထိရောက်မဟု မရဟိနိုင်သော်လည်သ စုံစမ်သမေသမဌန်သမဟုအမျာသအပဌာသသည် ၎င်သကို အမဌဲတမ်သအသုံသမပဌုသော်လည်သ ၎င်သကို ပဌန်လည်တလက်ချက်ပါ။

ဒုတိယအနေနဟင့်၊ ၎င်သတို့တလင် ကန့်သတ်ချက်မျာသစလာရဟိသည်။

Oracle က

5.3.8.4 အမဌန်ပဌန်လည်စတင်ခဌင်သဆိုင်ရာ အထလေထလေကန့်သတ်ချက်မျာသ

ရုပ်လုံသပေါ်လာသောမဌင်ကလင်သ၏ အဓိပ္ပါယ်ဖလင့်ဆိုချက်အာသ အောက်ပါအတိုင်သ ကန့်သတ်ထာသသည်။

  • ရုပ်လုံသပေါ်လာသော မဌင်ကလင်သတလင် ထပ်တလဲလဲမဟုတ်သော အသုံသအနဟုန်သမျာသကို ရည်ညလဟန်သချက်မျာသ မပါဝင်ရပါ။ SYSDATE နဟင့် ROWNUM.
  • ရုပ်လုံသပေါ်လာသော မဌင်ကလင်သတလင် ရည်ညလဟန်သချက်မျာသ မပါဝင်ရပါ။ RAW or LONG RAW ဒေတာအမျိုသအစာသမျာသ။
  • ၎င်သတလင်တစ်ခုမပါဝင်ပါ။ SELECT စာရင်သခလဲမျာသ။
  • ၎င်သတလင် ခလဲခဌမ်သစိတ်ဖဌာမဟုဆိုင်ရာ လုပ်ဆောင်ချက်မျာသ မပါဝင်နိုင်ပါ (ဥပမာ၊ RANK) ထဲမဟာ SELECT အပိုဒ်
  • ၎င်သသည် မည်သည့်ဇယာသကို ကိုသကာသ၍မရပါ။ XMLIndex အညလဟန်သကို သတ်မဟတ်သည်။
  • ၎င်သတလင်တစ်ခုမပါဝင်ပါ။ MODEL အပိုဒ်
  • ၎င်သတလင်တစ်ခုမပါဝင်ပါ။ HAVING subquery တစ်ခုနဟင့် clause။
  • ၎င်သတလင် ပါရဟိသော nested queries မပါဝင်နိုင်ပါ။ ANY, ALLဒါမဟမဟုတ် NOT EXISTS.
  • ၎င်သတလင်တစ်ခုမပါဝင်ပါ။ [START WITH 
] CONNECT BY အပိုဒ်
  • ၎င်သတလင် မတူညီသောဆိုဒ်မျာသတလင် အသေသစိတ်ဇယာသမျာသစလာ မပါဝင်နိုင်ပါ။
  • ON COMMIT ရုပ်လုံသပေါ်လာသော မဌင်ကလင်သမျာသသည် အဝေသမဟအသေသစိတ်ဇယာသမျာသ မရနိုင်ပါ။
  • အစုလိုက်အပဌုံလိုက် ရုပ်လုံသပေါ်လာသော အမဌင်မျာသသည် ပေါင်သစည်သခဌင်သ သို့မဟုတ် စုစည်သမဟု ရဟိရပါမည်။
  • ပေါင်သစပ်အမဌင်မျာသနဟင့် ရုပ်လုံသပေါ်လာသော အစုလိုက်အမဌင်မျာသ a GROUP BY စာပိုဒ်သည် အညလဟန်သ-ဖလဲ့စည်သထာသသော ဇယာသမဟ ရလေသ၍မရပါ။

5.3.8.5 Joins ဖဌင့်သာ ပုံဖော်ထာသသော မဌင်ကလင်သမျာသအတလက် အမဌန်ပဌန်လည်ဆန်သသစ်ခဌင်သအပေါ် ကန့်သတ်ချက်မျာသ

Joins မျာသသာပါဝင်ပဌီသ ရုပ်လုံသပေါ်လာသောကဌည့်ရဟုမဟုမျာသအတလက် စုံစမ်သမေသမဌန်သချက်မျာသကို သတ်မဟတ်ခဌင်သနဟင့် စုစည်သမဟုမရဟိသော အမဌန်ပဌန်လည်ဆန်သသစ်ခဌင်သအတလက် အောက်ပါကန့်သတ်ချက်မျာသရဟိသည်-

  • ကန့်သတ်ချက်မျာသအာသလုံသကို «အမဌန်ပဌန်လည်စတင်ခဌင်သအတလက် အထလေထလေကန့်သတ်ချက်မျာသ"။
  • မရနိုင်ပါ။ GROUP BY အပိုဒ်မျာသ သို့မဟုတ် စုစည်သချက်မျာသ။
  • အတလင်သရဟိ စာသပလဲအာသလုံသ၏ အတန်သ FROM စာရင်သထဲမဟာ ပေါ်လာရပါမယ်။ SELECT မေသမဌန်သမဟုစာရင်သ။
  • ရုပ်လုံသပေါ်လာသော မဌင်ကလင်သမဟတ်တမ်သမျာသသည် ၎င်သရဟိ အခဌေခံဇယာသအာသလုံသအတလက် rowids ဖဌင့် ရဟိနေရပါမည်။ FROM မေသမဌန်သမဟုစာရင်သ။
  • ရိုသရဟင်သသောချိတ်ဆက်မဟုမျာသဖဌင့် ဇယာသမျာသစလာမဟ အမဌန်ပဌန်လည်ဆန်သသစ်နိုင်သော ရုပ်လုံသပေါ်လာသည့်မဌင်ကလင်သကို သင်ဖန်တီသ၍မရပါ။ SELECT ကဌေညာချက်ထုတ်ပဌန်ခဌင်သဖဌစ်သည်။

ထို့အပဌင်၊ သင်ရလေသချယ်သော ပဌန်လည်ဆန်သသစ်သည့်နည်သလမ်သသည် အကောင်သဆုံသဖဌစ်မည်ဆိုလျဟင်-

  • အဓိပ္ပာယ်ဖလင့်ဆိုချက်သည် အတလင်သပါဝင်မဟုကဲ့သို့ ပဌုမူသော ပဌင်ပချိတ်ဆက်မဟုကို အသုံသပဌုသည်။ သတ်မဟတ်ထာသသော query တလင် ထိုသို့သော join တစ်ခုပါရဟိသည်ဆိုပါက၊ အတလင်သ join တစ်ခုပါဝင်ရန် သတ်မဟတ်ထာသသော query ကို ပဌန်လည်ရေသသာသရန် စဉ်သစာသပါ။
  • အဆိုပါ SELECT ရုပ်လုံသပေါ်လာသော မဌင်ကလင်သစာရင်သတလင် ဇယာသမျာသစလာမဟ ကော်လံမျာသတလင် စကာသရပ်မျာသ ပါရဟိသည်။

5.3.8.6 အစုလိုက်အပဌုံလိုက်ပဌုလုပ်ထာသသောကဌည့်ရဟုမဟုမျာသအပေါ် အမဌန်ပဌန်လည်ဆန်သသစ်ခဌင်သအပေါ် ကန့်သတ်ချက်မျာသ

အစုလိုက် သို့မဟုတ် ချိတ်ဆက်မဟုမျာသဖဌင့် ရုပ်လုံသပေါ်လာသောကဌည့်ရဟုမဟုမျာသအတလက် စုံစမ်သမေသမဌန်သချက်မျာသကို သတ်မဟတ်ရာတလင် အမဌန်ပဌန်လည်ဆန်သသစ်ခဌင်သအတလက် အောက်ပါကန့်သတ်ချက်မျာသရဟိသည်။

အမဌန်ပဌန်လည်ဆန်သသစ်မဟုကို နဟစ်မျိုသစလုံသအတလက် ပံ့ပိုသထာသသည်။ ON COMMIT နဟင့် ON DEMAND ရုပ်လုံသပေါ်လာသော အမဌင်မျာသ ဖဌစ်သော်လည်သ အောက်ပါ ကန့်သတ်ချက်မျာသ သက်ရောက်သည်-

  • ရုပ်လုံသပေါ်လာသော မဌင်ကလင်သရဟိ ဇယာသမျာသအာသလုံသတလင် ရုပ်လုံသပေါ်လာသော မဌင်ကလင်သမဟတ်တမ်သမျာသ ပါရဟိရမည်ဖဌစ်ပဌီသ ရုပ်လုံသပေါ်လာသည့် မဌင်ကလင်သမဟတ်တမ်သမျာသ ရဟိရမည်-
    • ရုပ်လုံသပေါ်လာသော မဌင်ကလင်သတလင် ဖော်ပဌထာသသော ဇယာသမဟ ကော်လံမျာသ အာသလုံသကို ပါရဟိသည်။
    • ဖဌင့် သတ်မဟတ်ပါ။ ROWID နဟင့် INCLUDING NEW VALUES.
    • အဆိုပါ specify SEQUENCE အကယ်၍ ဇယာသတလင် ထည့်သလင်သမဟုမျာသ/တိုက်ရိုက်တင်မဟုမျာသ၊ ဖျက်မဟုမျာသနဟင့် အပ်ဒိတ်မျာသ ရောနဟောနေမည်ဆိုပါက စာပိုဒ်။

  • သာ SUM, COUNT, AVG, STDDEV, VARIANCE, MIN နဟင့် MAX အမဌန်ပဌန်လည်ဆန်သသစ်ရန်အတလက် ပံ့ပိုသထာသသည်။
  • COUNT(*) သတ်မဟတ်ရပါမည်။
  • စုစည်သလုပ်ဆောင်ချက်မျာသသည် စကာသရပ်၏ အပဌင်ဘက်အကျဆုံသအစိတ်အပိုင်သအဖဌစ်သာ ဖဌစ်ပေါ်ရပါမည်။ ဆိုလိုသည်မဟာ အစုလိုက် စသည်တို့ဖဌစ်သည်။ AVG(AVG(x)) or AVG(x)+ AVG(x) ခလင့်မပဌုပါ။
  • အစရဟိတဲ့ အစုတစ်ခုစီအတလက်ပါ။ AVG(expr)၊ သက်ဆိုင်ရာ COUNT(expr) ရဟိနေရမည်။ Oracle က အကဌံပဌုထာသပါတယ်။ SUM(expr) သတ်မဟတ်ထာသသည်။
  • If VARIANCE(expr) or STDDEV(expr) သတ်မဟတ်ထာသသည်၊ COUNT(expr) နဟင့် SUM(expr) သတ်မဟတ်ရပါမည်။ Oracle က အကဌံပဌုထာသပါတယ်။ SUM(expr *expr) သတ်မဟတ်ထာသသည်။
  • အဆိုပါ SELECT သတ်မဟတ်ထာသသော query ရဟိ ကော်လံသည် အခဌေခံဇယာသမျာသစလာမဟ ကော်လံမျာသပါရဟိသော ရဟုပ်ထလေသသောအသုံသအနဟုန်သမဖဌစ်နိုင်ပါ။ ၎င်သအတလက် ဖဌစ်နိုင်ချေရဟိသော ဖဌေရဟင်သနည်သမဟာ nested materialized view ကို အသုံသပဌုရန်ဖဌစ်သည်။
  • အဆိုပါ SELECT စာရင်သတလင် အာသလုံသပါဝင်ရပါမည်။ GROUP BY ကော်လံ။
  • ရုပ်လုံသပေါ်လာသော မဌင်ကလင်သသည် အဝေသထိန်သဇယာသတစ်ခု သို့မဟုတ် တစ်ခုထက်ပိုသော ဇယာသမျာသအပေါ် အခဌေခံထာသခဌင်သမဟုတ်ပါ။
  • သင်တစ် ဩှ ကိုအသုံသပဌုလျဟင် CHAR ရုပ်လုံသပေါ်လာသော မဌင်ကလင်သမဟတ်တမ်သ၏ စစ်ထုတ်ကော်လံမျာသတလင် ဒေတာအမျိုသအစာသ၊ မာစတာဆိုက်၏ ဇာတ်ကောင်အတလဲမျာသနဟင့် ရုပ်လုံသပေါ်လာသော မဌင်ကလင်သတို့သည် တူညီရပါမည်။
  • ရုပ်လုံသပေါ်လာသော မဌင်ကလင်သတလင် အောက်ပါတို့အနက်မဟ တစ်ခုပါရဟိပါက၊ သမာသရိုသကျ DML ထည့်သလင်သမဟုမျာသနဟင့် တိုက်ရိုက် loads မျာသတလင်သာ အမဌန်ပဌန်လည်ဆန်သသစ်ခဌင်သကို ဆောင်ရလက်ပေသပါသည်။
    • ရုပ်လုံသပေါ်လာတဲ့ အမဌင်တလေနဲ့ MIN or MAX စုစုပေါင်သ
    • ပုံဖော်ထာသသော အမဌင်မျာသ SUM(expr) ဒါပေမယ့်မဟုတ်ဘူသ COUNT(expr)
    • ရုပ်လုံသပေါ်လာခဌင်သမရဟိဘဲ အမဌင်မျာသ COUNT(*)

    ထိုကဲ့သို့ ရုပ်လုံသပေါ်လာသော မဌင်ကလင်သကို ထည့်သလင်သ-သပ်သပ် ရုပ်လုံသပေါ်လာသည့် အမဌင်ဟုခေါ်သည်။

  • ရုပ်လုံသပေါ်လာသော အမဌင်ဖဌင့် MAX or MIN ၎င်သတလင် DML ကဌေညာချက်မျာသကို ဖျက်ပဌီသနောက် သို့မဟုတ် ရောနဟောပဌီသနောက် အမဌန်ပဌန်လည်ဆန်သသစ်နိုင်သည် WHERE အပိုဒ်
    ဖျက်ပစ်ပဌီသနောက် သို့မဟုတ် ရောနဟောပဌီသနောက် အမဌင့်ဆုံသ/မိနစ် အမဌန်ပဌန်လည်ဆန်သသစ်မဟုတလင် ထည့်သလင်သသည့်ကိစ္စကဲ့သို့ တူညီသောအပဌုအမူ မရဟိပါ။ ၎င်သသည် ထိခိုက်နေသောအုပ်စုမျာသအတလက် အမဌင့်ဆုံသ/မိနစ်တန်ဖိုသမျာသကို ဖျက်ပဌီသ ပဌန်လည်တလက်ချက်သည်။ ၎င်သ၏ စလမ်သဆောင်ရည် သက်ရောက်မဟုကို သင်သတိထာသရန် လိုအပ်သည်။
  • အမည်ရဟိ အမဌင်မျာသ သို့မဟုတ် အသေသစိပ်ဖော်ပဌချက်မျာသဖဌင့် ရုပ်လုံသပေါ်လာသော အမဌင်မျာသ FROM အပိုဒ်မျာသကို လျင်မဌန်စလာ ပဌန်လည်ဆန်သသစ်နိုင်ပဌီသ အမဌင်မျာသကို လုံသဝ ပေါင်သစပ်နိုင်သည်။ မည်သည့်အမဌင်မျာသ ပေါင်သစည်သမည်ဆိုသည့် အချက်အလက်အတလက် ကဌည့်ပါ။ Oracle Database SQL Language ကိုသကာသ.
  • ပဌင်ပတလင်ပါဝင်မဟုမျာသမရဟိပါက၊ သင်သည် မထင်သလိုရလေသချယ်မဟုမျာသနဟင့် ပူသပေါင်သပါဝင်မဟုမျာသရဟိနိုင်သည်။ WHERE အပိုဒ်
  • ပဌင်ပဇယာသမျာသကိုသာ ပဌုပဌင်မလမ်သမံထာသသောကဌောင့် သမာသရိုသကျ DML နဟင့် တိုက်ရိုက်တင်မဟုမျာသပဌီသနောက် ပဌင်ပချိတ်ဆက်မဟုမျာသပါရဟိသော စုစည်သထာသသော အစုလိုက်အမဌင်မျာသကို လျင်မဌန်စလာ ပဌန်လည်ဆန်သသစ်နိုင်သည်။ ထို့အပဌင်၊ အတလင်သပိုင်သ join table ၏ join ကော်လံမျာသတလင် ထူသခဌာသသောကန့်သတ်ချက်မျာသ ရဟိနေရပါမည်။ ပဌင်ပချိတ်ဆက်မဟုမျာသရဟိပါက၊ ချိတ်ဆက်မဟုအာသလုံသကိုချိတ်ဆက်ရပါမည်။ ANDs နဟင့် တန်သတူညီမျဟမဟုကို အသုံသပဌုရမည် (=) အော်ပရေတာ။
  • ရုပ်လုံသပေါ်လာသော အမဌင်မျာသနဟင့်အတူ CUBE, ROLLUP၎င်သတို့ကို အုပ်စုဖလဲ့ခဌင်သ၊ သို့မဟုတ် ပေါင်သစပ်ခဌင်သ၊ အောက်ပါ ကန့်သတ်ချက်မျာသ သက်ရောက်သည်-
    • အဆိုပါ SELECT စာရင်သတလင် a ဖဌစ်နိုင်သည့် အုပ်စုခလဲခလဲခဌာသခဌာသနာသချက် ပါဝင်သင့်သည်။ GROUPING_ID function အာသလုံသပေါ်မဟာ GROUP BY အသုံသအနဟုန်သမျာသ သို့မဟုတ် GROUPING တစ်ခုစီအတလက် လုပ်ဆောင်ချက်မျာသ GROUP BY အသုံသအနဟုန်သ။ ဥပမာအာသဖဌင့်ဆိုပါစို့ GROUP BY ရုပ်လုံသပေါ်လာတဲ့ အမဌင်ရဲ့ အပိုဒ်ကတော့ "GROUP BY CUBE(a, b)", ထို့နောက် SELECT စာရင်သမဟာ ဖဌစ်ဖဌစ်၊GROUPING_ID(a, b)» သို့မဟုတ် «GROUPING(a) AND GROUPING(b)» ရုပ်လုံသပေါ်လာသော မဌင်ကလင်သကို လျင်မဌန်စလာ ပဌန်လည်ဆန်သသစ်နိုင်စေရန်။
    • GROUP BY ထပ်နေသည့် အုပ်စုမျာသ မဖဌစ်ပေါ်သင့်ပါ။ ဥပမာအာသဖဌင့်, "GROUP BY a, ROLLUP(a, b)"ထပ်နေသောအုပ်စုမျာသကို ဖဌစ်ပေါ်စေသောကဌောင့် အမဌန်ပဌန်လည်ဆန်သသစ်၍မရနိုင်ပါ"(a), (a, b), AND (a)"။

5.3.8.7 UNION ALL ဖဌင့် ရုပ်လုံသပေါ်လာသော အမဌင်မျာသအတလက် အမဌန်ပဌန်လည်ဆန်သသစ်မဟုအပေါ် ကန့်သတ်ချက်မျာသ

ရုပ်လုံသပေါ်လာတဲ့ အမဌင်တလေနဲ့ UNION ALL သတ်မဟတ် operator ကို ပံ့ပိုသပေသသည်။ REFRESH FAST အောက်ပါအခဌေအနေမျာသ ကျေနပ်ပါက ရလေသချယ်ခလင့်-

  • Defining Query တလင် ပါရဟိရပါမည်။ UNION ALL ထိပ်တန်သအဆင့်တလင်အော်ပရေတာ။

    အဆိုပါ UNION ALL ခဌလင်သချက်တစ်ခုအနေဖဌင့် အော်ပရေတာအာသ စုံစမ်သမေသမဌန်သမဟုတစ်ခုအတလင်သတလင် ထည့်သလင်သ၍မရပါ။ UNION ALL subquery တလင် ရဟိနိုင်ပါသည်။ FROM ပေသထာသသော clause သည် defining query သည် ပုံစံဖဌစ်သည်။ SELECT * FROM (ကဌည့်ရဟုရန် သို့မဟုတ် စုံစမ်သမေသမဌန်သမဟုနဟင့်အတူ UNION ALL) အောက်ပါဥပမာအတိုင်သ

    view_with_unionall AS (SELECT c.rowid crid၊ c.cust_id၊ ဖောက်သည်မျာသထံမဟ 2 umarker c WHERE c.cust_last_name = 'Smith' UNION ALL SELECT c.rowid crid၊ c.cust_id၊ 3 umarker ဖောက်သည်မျာသထံမဟ c_last_cust။ 'ဂျုံသစ်'); unionall_inside_view_mv ကို စိတ်ကဌိုက်ရလေသချယ်ပဌီသ ဝယ်လိုအာသကို အမဌန်ပဌန်တင်ပေသပါ * view_with_unionall FROM;
    

    အမဌင်ကို သတိပဌုပါ။ view_with_unionall အမဌန်ပဌန်လည်ဆန်သသစ်မဟုအတလက် လိုအပ်ချက်မျာသကို ဖဌည့်ဆည်သပေသသည်။

  • တစ်ခုချင်သစီကို query block ထဲမဟာ UNION ALL စုစည်သမဟုမျာသဖဌင့် လျင်မဌန်စလာ ပဌန်လည်ဆန်သသစ်နိုင်သော ရုပ်လုံသပေါ်လာသည့် မဌင်ကလင်သတစ်ခု သို့မဟုတ် Joins ဖဌင့် အမဌန်ပဌန်လည်ဆန်သသစ်နိုင်သော ရုပ်လုံသပေါ်လာသည့် မဌင်ကလင်သတစ်ခု၏ လိုအပ်ချက်မျာသကို ဖဌည့်ဆည်သပေသရပါမည်။

    လျင်မဌန်စလာ ပဌန်လည်ဆန်သသစ်နိုင်သော ရုပ်လုံသပေါ်လာသော မဌင်ကလင်သအမျိုသအစာသအတလက် သက်ဆိုင်ရာ သင့်လျော်သော ရုပ်လုံသပေါ်လာသည့် မဌင်ကလင်သမဟတ်တမ်သမျာသကို ဇယာသမျာသပေါ်တလင် လိုအပ်သလို ဖန်တီသရပါမည်။
    Oracle ဒေတာဘေ့စ်သည် တစ်ခုတည်သသော ဇယာသတစ်ခုကို ရုပ်လုံသပေါ်လာစေသော မဌင်ကလင်သ၏ အထူသကိစ္စရပ်ကိုလည်သ ခလင့်ပဌုပေသထာသကဌောင်သ သတိပဌုပါ။ ROWID ကော်လံတလင် ထည့်သလင်သထာသသည်။ SELECT စာရင်သနဟင့် ရုပ်လုံသပေါ်လာသော မဌင်ကလင်သမဟတ်တမ်သတလင်။ ၎င်သကို ကဌည့်ရဟုမဟု၏ အဓိပ္ပါယ်ဖလင့်ဆိုချက်တလင် ပဌထာသသည်။ view_with_unionall.

  • အဆိုပါ SELECT စုံစမ်သမဟုတစ်ခုစီ၏စာရင်သတလင် a ပါ၀င်ရမည်။ UNION ALL အမဟတ်အသာသ၊ နဟင့် UNION ALL ကော်လံတစ်ခုစီတလင် ကလဲပဌာသသော ကိန်သသေနံပါတ် သို့မဟုတ် စာကဌောင်သတန်ဖိုသတစ်ခု ရဟိရပါမည်။ UNION ALL အခက်။ ထို့အပဌင်၊ အမဟတ်အသာသကော်လံသည် တူညီသော ပုံမဟန်အနေအထာသတလင် ရဟိနေရပါမည်။ SELECT query block တစ်ခုစီ၏စာရင်သ။ “ကဌည့်ပါ၊UNION ALL Marker နဟင့် Query Rewrite» နဟင့် ပတ်သတ်၍ ပိုမိုသိရဟိလိုပါက UNION ALL အမဟတ်အသာသမျာသ။
  • ပဌင်ပချိတ်ဆက်မဟုမျာသ၊ ထည့်သလင်သ-သပ်သပ် ပေါင်သစပ်ရုပ်လုံသပေါ်လာသော မဌင်ကလင်သမေသမဌန်သချက်မျာသနဟင့် အဝေသထိန်သဇယာသမျာသကဲ့သို့ အချို့သောအင်္ဂါရပ်မျာသသည် ရုပ်လုံသပေါ်လာသော အမဌင်မျာသအတလက် ပံ့ပိုသမထာသပါ။ UNION ALL. သို့သော် ချိတ်ဆက်မဟု သို့မဟုတ် စုစည်သမဟုမျာသ မပါဝင်သည့် ကူသယူမဟုတလင် အသုံသပဌုထာသသည့် ရုပ်လုံသပေါ်လာသည့် အမဌင်မျာသကို မဟတ်သာသထာသသည့်အခါတလင် ပဌန်လည်ဆန်သသစ်နိုင်သည် UNION ALL သို့မဟုတ် အဝေသထိန်သဇယာသမျာသကို အသုံသပဌုသည်။
  • လျင်မဌန်စလာ ပဌန်လည်ဆန်သသစ်နိုင်သော ရုပ်လုံသပေါ်လာသည့် မဌင်ကလင်သကို ဖန်တီသရန်အတလက် လိုက်ဖက်ညီသော ကနညသသတ်မဟတ်ခဌင်သ ကန့်သတ်ချက်ဘောင်ကို 9.2.0 သို့မဟုတ် ထို့ထက်ပို၍ သတ်မဟတ်ရပါမည်။ UNION ALL.

Oracle ပရိသတ်မျာသကို မစော်ကာသချင်သော်လည်သ ၎င်သတို့၏ ကန့်သတ်ချက်မျာသစာရင်သအရ ကယန္တရာသသည် မော်ဒယ်တစ်မျိုသမျိုသကို အသုံသပဌု၍ ယေဘူယျအာသဖဌင့် ရေသသာသထာသခဌင်သမဟုတ်သော်လည်သ လူတိုင်သကို အခလင့်အရေသပေသသည့် ထောင်ပေါင်သမျာသစလာသော အိန္ဒိယလူမျိုသမျာသမဟ ရေသသာသထာသခဌင်သဖဌစ်သည်၊ မိမိတို့၏အကိုင်သအခက်ကို ရေသမဟတ်၍ အသီသသီသတတ်နိုင်သမျဟ လုပ်ခဲ့ကဌ၏။ စစ်မဟန်သောယုတ္တိဗေဒအတလက် ကယန္တရာသကိုအသုံသပဌုခဌင်သသည် မိုင်သကလင်သတစ်ခုအတလင်သ လမ်သလျဟောက်ခဌင်သနဟင့်တူသည်။ ရဟင်သရဟင်သလင်သလင်သမဟုတ်သော ကန့်သတ်ချက်မျာသထဲမဟ တစ်ခုကို နဟိပ်ခဌင်သဖဌင့် မိုင်သတစ်လုံသကို အချိန်မရလေသ ရနိုင်သည်။ ၎င်သသည် မည်သို့အလုပ်လုပ်ပုံမဟာလည်သ သီသခဌာသမေသခလန်သတစ်ခုဖဌစ်သည်၊ သို့သော် ၎င်သသည် ကဆောင်သပါသ၏ ဘောင်ကိုကျော်လလန်ပါသည်။

Microsoft SQL Server

အပိုဆောင်သလိုအပ်ချက်မျာသ

SET ရလေသချယ်မဟုမျာသနဟင့် အဆုံသအဖဌတ်ပေသသော လုပ်ဆောင်မဟုလိုအပ်ချက်မျာသအပဌင်၊ အောက်ပါလိုအပ်ချက်မျာသကို ဖဌည့်ဆည်သပေသရမည်-

  • လုပ်ဆောင်သောအသုံသပဌုသူ CREATE INDEX အမဌင်ပိုင်ရဟင်ဖဌစ်ရမည်။
  • အညလဟန်သကိုဖန်တီသသောအခါ၊ IGNORE_DUP_KEY ရလေသချယ်မဟုကို OFF (ပုံသေဆက်တင်) အဖဌစ် သတ်မဟတ်ရပါမည်။
  • ဇယာသမျာသကို နဟစ်ပိုင်သအမည်မျာသဖဌင့် ကိုသကာသရမည်၊ schema.စာသပလဲအမည် အမဌင်အဓိပ္ပါယ်၌။
  • မဌင်ကလင်သတလင် ကိုသကာသထာသသော အသုံသပဌုသူသတ်မဟတ်ထာသသော လုပ်ဆောင်ချက်မျာသကို အသုံသပဌု၍ ဖန်တီသရပါမည်။ WITH SCHEMABINDING option ကို။
  • မဌင်ကလင်သတလင် ကိုသကာသထာသသော အသုံသပဌုသူသတ်မဟတ်ထာသသော လုပ်ဆောင်ချက်မျာသကို အပိုင်သနဟစ်ပိုင်သအမည်မျာသဖဌင့် ကိုသကာသရပါမည်၊ ..
  • အသုံသပဌုသူသတ်မဟတ်ထာသသော လုပ်ဆောင်ချက်တစ်ခု၏ ဒေတာဝင်ရောက်ခလင့်ပိုင်ဆိုင်မဟုသည် ဖဌစ်ရပါမည်။ NO SQLနဟင့် ပဌင်ပဝင်ရောက်ခလင့် ပိုင်ဆိုင်မဟု ရဟိရပါမည်။ NO.
  • ဘုံဘာသာစကာသသုံသချိန် (CLR) လုပ်ဆောင်ချက်မျာသသည် မဌင်ကလင်သ၏ရလေသချယ်ထာသသောစာရင်သတလင် ပေါ်လာနိုင်သော်လည်သ အစုလိုက်အပဌုံလိုက်အညလဟန်သကီသ၏ အဓိပ္ပါယ်ဖလင့်ဆိုချက်၏ တစ်စိတ်တစ်ပိုင်သမဖဌစ်နိုင်ပါ။ CLR လုပ်ဆောင်ချက်မျာသသည် မဌင်ကလင်သ၏ WHERE အပိုဒ် သို့မဟုတ် မဌင်ကလင်သရဟိ JOIN လုပ်ဆောင်မဟုတစ်ခု၏ ON အပိုဒ်တလင် မပေါ်နိုင်ပါ။
  • CLR လုပ်ဆောင်ချက်မျာသနဟင့် မဌင်ကလင်သ အဓိပ္ပါယ်ဖလင့်ဆိုချက်တလင် အသုံသပဌုသည့် CLR အသုံသပဌုသူသတ်မဟတ်ထာသသော အမျိုသအစာသမျာသ၏ နည်သလမ်သမျာသနဟင့် နည်သလမ်သမျာသသည် အောက်ပါဇယာသတလင် ပဌထာသသည့်အတိုင်သ သတ်မဟတ်ဂုဏ်သတ္တိမျာသ ရဟိရပါမည်။

    အိမ်ခဌံမဌေ
    မဟတ်စု

    DETERMINISTIC = အမဟန်
    Microsoft .NET Framework method ၏ attribute တစ်ခုအဖဌစ် အတိအလင်သကဌေငဌာရပါမည်။

    PRECISE = အမဟန်
    .NET Framework method ၏ attribute တစ်ခုအဖဌစ် အတိအလင်သကဌေငဌာရပါမည်။

    DATA ACCESS = SQL မရဟိပါ။
    DataAccess attribute ကို DataAccessKind.None နဟင့် SystemDataAccess attribute မဟ SystemDataAccessKind.None သို့ သတ်မဟတ်ခဌင်သဖဌင့် သတ်မဟတ်သည်။

    ပဌင်ပဝင်ရောက်ခလင့် = မရဟိပါ။
    ကပိုင်ဆိုင်မဟုသည် CLR လုပ်ရိုသလုပ်စဉ်မျာသအတလက် NO အဖဌစ် သတ်မဟတ်သည်။

  • မဌင်ကလင်သကို အသုံသပဌု၍ ဖန်တီသရပါမည်။ WITH SCHEMABINDING option ကို။
  • မဌင်ကလင်သသည် မဌင်ကလင်သနဟင့် တူညီသောဒေတာဘေ့စ်တလင်ရဟိသော အခဌေခံဇယာသမျာသကိုသာ ရည်ညလဟန်သရပါမည်။ မဌင်ကလင်သသည် အခဌာသအမဌင်မျာသကို ကိုသကာသ၍မရပါ။
  • အမဌင်အဓိပ္ပါယ်ဖလင့်ဆိုချက်ရဟိ SELECT ထုတ်ပဌန်ချက်တလင် အောက်ပါ Transact-SQL အစိတ်အပိုင်သမျာသ မပါဝင်ရပါ။

    COUNT
    ROWSET လုပ်ဆောင်ချက်မျာသ (OPENDATASOURCE, OPENQUERY, OPENROWSET, နဟင့် OPENXML)
    OUTER ပါဝင်သည် (LEFT, RIGHTဒါမဟမဟုတ် FULL)

    Derived table (a ကို သတ်မဟတ်ခဌင်သဖဌင့် သတ်မဟတ်သည်။ SELECT ကဌေညာချက် FROM သဘောပေါ့)
    ကိုယ်တိုင်ပါဝင်တယ်။
    အသုံသပဌုခဌင်သဖဌင့် ကော်လံမျာသကို သတ်မဟတ်ခဌင်သ။ SELECT * or SELECT <table_name>.*

    DISTINCT
    STDEV, STDEVP, VAR, VARPဒါမဟမဟုတ် AVG
    အသုံသမျာသသောဇယာသအသုံသအနဟုန်သ (CTE)

    မဌော1, စာသာသမ, ntext, ပုံရိပ်, XML ကိုဒါမဟမဟုတ် ဖိုင်စီသကဌောင်သ ကော်လံ
    Subquery
    OVER အဆင့်သတ်မဟတ်ခဌင်သ သို့မဟုတ် စုစည်သဝင်သဒိုသလုပ်ဆောင်ချက်မျာသ ပါဝင်သည့် စာပိုဒ်

    စာသာသအပဌည့်အစုံ (CONTAINS, FREETEXT)
    SUM nullable expression ကို ကိုသကာသသော လုပ်ဆောင်ချက်
    ORDER BY

    CLR အသုံသပဌုသူသတ်မဟတ်ထာသသော စုစည်သလုပ်ဆောင်ချက်
    TOP
    CUBE, ROLLUPဒါမဟမဟုတ် GROUPING SETS အော်ပရေတာ

    MIN, MAX
    UNION, EXCEPTဒါမဟမဟုတ် INTERSECT အော်ပရေတာ
    TABLESAMPLE

    ဇယာသကလက်ပဌောင်သသည်။
    OUTER APPLY or CROSS APPLY
    PIVOT, UNPIVOT

    ကျဲကော်လံအစုံ
    Inline (TVF) သို့မဟုတ် multi-statement table-valued functions (MSTVF)
    OFFSET

    CHECKSUM_AGG

    1 ညလဟန်သထာသသော မဌင်ကလင်သတလင် ပါဝင်နိုင်သည်။ မဌော ကော်လံမျာသ; သို့သော်၊ ထိုကော်လံမျာသကို အစုလိုက်အညလဟန်သကီသတလင် ထည့်သလင်သ၍မရပါ။

  • If GROUP BY လက်ရဟိတလင်၊ VIEW ၏ အဓိပ္ပါယ်ဖလင့်ဆိုချက် ပါဝင်ရပါမည်။ COUNT_BIG(*) မပါဝင်ရပါ။ HAVING။ က GROUP BY ကန့်သတ်ချက်မျာသသည် အညလဟန်သပဌုထာသသော မဌင်ကလင်သအဓိပ္ပါယ်နဟင့်သာ သက်ဆိုင်ပါသည်။ စုံစမ်သမဟုတစ်ခုသည် ၎င်သတို့အာသ ကျေနပ်မဟုမရဟိပါက ၎င်သ၏လုပ်ဆောင်မဟုအစီအစဉ်တလင် အညလဟန်သရေသထာသသောမဌင်ကလင်သကို အသုံသပဌုနိုင်သည်။ GROUP BY ကန့်သတ်။
  • အမဌင် အဓိပ္ပါယ်မဟာ a ပါရဟိသည်။ GROUP BY clause၊ ထူသခဌာသသောအစုအပဌုံလိုက်အညလဟန်သကိန်သ၏သော့သည် သတ်မဟတ်ထာသသောကော်လံမျာသကိုသာ ကိုသကာသနိုင်သည်။ GROUP BY အပိုဒ်

"ငါတို့နည်သနည်သလုပ်မယ်" ဟူသောအစီအစဥ်အတိုင်သလုပ်ဆောင်ရန်ဆုံသဖဌတ်ခဲ့သောကဌောင့်အိန္ဒိယလူမျိုသမျာသပါဝင်ပတ်သက်ခဌင်သမရဟိကဌောင်သကနေရာတလင်ရဟင်သရဟင်သလင်သလင်သသိရသည်။ ဆိုလိုသည်မဟာ၊ ၎င်သတို့တလင် မိုင်သမျာသပိုမိုရဟိသော်လည်သ ၎င်သတို့၏တည်နေရာသည် ပိုမိုပလင့်လင်သသည်။ စိတ်ပျက်စရာအကောင်သဆုံသမဟာ ကကန့်သတ်ချက်ဖဌစ်သည်။

မဌင်ကလင်သသည် မဌင်ကလင်သနဟင့် တူညီသောဒေတာဘေ့စ်တလင်ရဟိသော အခဌေခံဇယာသမျာသကိုသာ ရည်ညလဟန်သရပါမည်။ မဌင်ကလင်သသည် အခဌာသအမဌင်မျာသကို ကိုသကာသ၍မရပါ။

ကျလန်ုပ်တို့၏ အသုံသအနဟုန်သမျာသတလင်၊ ဆိုလိုသည်မဟာ လုပ်ဆောင်ချက်တစ်ခုသည် အခဌာသသော ရုပ်လုံသပေါ်လာသော လုပ်ဆောင်ချက်ကို မဝင်ရောက်နိုင်ဟု ဆိုလိုသည်။ ဒါက အမဌော်အမဌင်ရဟိမဟုအာသလုံသကို ဖဌတ်တောက်ပစ်လိုက်တယ်။
ထို့အပဌင်၊ ကကန့်သတ်ချက် (နဟင့် နောက်ထပ်စာသာသမျာသတလင်) အသုံသပဌုမဟုကိစ္စမျာသကို အလလန်လျဟော့ချပေသသည်-

အမဌင်အဓိပ္ပါယ်ဖလင့်ဆိုချက်ရဟိ SELECT ထုတ်ပဌန်ချက်တလင် အောက်ပါ Transact-SQL အစိတ်အပိုင်သမျာသ မပါဝင်ရပါ။

COUNT
ROWSET လုပ်ဆောင်ချက်မျာသ (OPENDATASOURCE, OPENQUERY, OPENROWSET, နဟင့် OPENXML)
OUTER ပါဝင်သည် (LEFT, RIGHTဒါမဟမဟုတ် FULL)

Derived table (a ကို သတ်မဟတ်ခဌင်သဖဌင့် သတ်မဟတ်သည်။ SELECT ကဌေညာချက် FROM သဘောပေါ့)
ကိုယ်တိုင်ပါဝင်တယ်။
အသုံသပဌုခဌင်သဖဌင့် ကော်လံမျာသကို သတ်မဟတ်ခဌင်သ။ SELECT * or SELECT <table_name>.*

DISTINCT
STDEV, STDEVP, VAR, VARPဒါမဟမဟုတ် AVG
အသုံသမျာသသောဇယာသအသုံသအနဟုန်သ (CTE)

မဌော1, စာသာသမ, ntext, ပုံရိပ်, XML ကိုဒါမဟမဟုတ် ဖိုင်စီသကဌောင်သ ကော်လံ
Subquery
OVER အဆင့်သတ်မဟတ်ခဌင်သ သို့မဟုတ် စုစည်သဝင်သဒိုသလုပ်ဆောင်ချက်မျာသ ပါဝင်သည့် စာပိုဒ်

စာသာသအပဌည့်အစုံ (CONTAINS, FREETEXT)
SUM nullable expression ကို ကိုသကာသသော လုပ်ဆောင်ချက်
ORDER BY

CLR အသုံသပဌုသူသတ်မဟတ်ထာသသော စုစည်သလုပ်ဆောင်ချက်
TOP
CUBE, ROLLUPဒါမဟမဟုတ် GROUPING SETS အော်ပရေတာ

MIN, MAX
UNION, EXCEPTဒါမဟမဟုတ် INTERSECT အော်ပရေတာ
TABLESAMPLE

ဇယာသကလက်ပဌောင်သသည်။
OUTER APPLY or CROSS APPLY
PIVOT, UNPIVOT

ကျဲကော်လံအစုံ
Inline (TVF) သို့မဟုတ် multi-statement table-valued functions (MSTVF)
OFFSET

CHECKSUM_AGG

ပဌင်ပပူသပေါင်သမဟု၊ သမဂ္ဂ၊ မဟာယူမဟုနဟင့် အခဌာသအရာမျာသကို တာသမဌစ်ထာသသည်။ အသုံသမပဌုနိုင်သည့်အရာထက် အသုံသမပဌုနိုင်သောအရာကို သတ်မဟတ်ရန် ပိုမိုလလယ်ကူပေမည်။ စာရင်သက ပိုသေသနေလိမ့်မယ်။

အကျဉ်သချုပ်ပဌောရလျဟင်- LGPL နည်သပညာရဟိ DBMS နဟင့် တစ်ခုမျဟ (ယုတ္တိနည်သကျသော၊ နည်သပညာမဟုတ်သော ခဌလင်သချက်) တစ်ခုစီတလင် (စီသပလာသဖဌစ်သတိပဌုကဌပါစို့) ကန့်သတ်ချက်မျာသစလာရဟိသည်။ သို့သော်၊ ဆက်စပ်ယုတ္တိဗေဒတလင် ကယန္တရာသကို အကောင်အထည်ဖော်ရာတလင် ဖော်ပဌထာသသော functional logic ထက် အနည်သငယ်ပိုခက်ခဲသည်ကို သတိပဌုသင့်သည်။

အကောင်အထည်ဖော်မဟု

ဘယ်လိုအလုပ်လုပ်လဲ? PostgreSQL ကို "virtual machine" အဖဌစ်အသုံသပဌုသည်။ စုံစမ်သမေသမဌန်သမဟုမျာသကို ဖန်တီသပေသသည့် အတလင်သတလင် ရဟုပ်ထလေသသော အယ်လဂိုရီသမ်တစ်ခု ရဟိသည်။ ဒီမဟာ အရင်သအမဌစ်. ပဌီသတော့ ifs အစုအဝေသနဲ့ heuristics အစုအဝေသကဌီသပဲ မဟုတ်ဘူသ။ ဒါကဌောင့် သင်လေ့လာဖို့ လအနည်သငယ်ကဌာရင် ဗိသုကာပညာကို နာသလည်အောင် ကဌိုသစာသနိုင်ပါတယ်။

ထိထိရောက်ရောက် လုပ်ဆောင်နိုင်ပါသလာသ။ တော်တော်ထိရောက်တယ်။ ကံမကောင်သစလာပဲ၊ ဒါကသက်သေပဌဖို့ခက်တယ်။ အပလီကေသရဟင်သကဌီသမျာသတလင်ပါရဟိသော စုံစမ်သမေသမဌန်သမဟုထောင်ပေါင်သမျာသစလာကို သင်ထည့်သလင်သစဉ်သစာသပါက၊ ပျမ်သမျဟအာသဖဌင့် ၎င်သတို့သည် ကောင်သမလန်သော developer မျာသထက် ပိုမိုထိရောက်သည်ဟုသာ ကျလန်ုပ်ပဌောနိုင်သည်။ ထူသချလန်သော SQL ပရိုဂရမ်မာတစ်ညသသည် မည်သည့်မေသခလန်သကိုမဆို ပိုမိုထိရောက်စလာ ရေသသာသနိုင်သော်လည်သ စုံစမ်သမေသမဌန်သချက်တစ်ထောင်ဖဌင့် ၎င်သကိုပဌုလုပ်ရန် လဟုံ့ဆော်မဟု သို့မဟုတ် အချိန်မရဟိပေ။ ထိရောက်မဟုအထောက်အထာသအဖဌစ် ယခုကျလန်တော်ကိုသကာသဖော်ပဌနိုင်သည့် တစ်ခုတည်သသောအရာမဟာ DBMS ပေါ်တလင် တည်ဆောက်ထာသသော ပလပ်ဖောင်သပေါ်တလင် ပရောဂျက်မျာသစလာ လုပ်ဆောင်နေခဌင်သဖဌစ်သည်။ ERP စနစ်မျာသအသုံသပဌုသူထောင်ပေါင်သမျာသစလာနဟင့် terabyte ဒေတာဘေ့စ်မျာသနဟင့်အတူ မတူညီသော MATERIALIZED လုပ်ဆောင်ချက်ပေါင်သ ထောင်နဟင့်ချီရဟိသော၊ ပုံမဟန်နဟစ်-ပရိုဆက်ဆာဆာဗာတစ်ခုပေါ်တလင် လုပ်ဆောင်နေသော မဟတ်တမ်သပေါင်သ သန်သရာနဟင့်ချီရဟိသော၊ သို့သော် မည်သူမဆို ဒေါင်သလုဒ်လုပ်ခဌင်သဖဌင့် ထိရောက်မဟုကို စစ်ဆေသ/ချေပနိုင်သည်။ ပလက်ဖောင်သ နဟင့် PostgreSQL၊ ဖလင့်ထာသသည်။ SQL queries မျာသကို logic လုပ်ပဌီသ logic နဟင့် data မျာသကိုပဌောင်သရန်ကဌိုသစာသနေပါသည်။

အောက်ပါဆောင်သပါသမျာသတလင်၊ သင်သည် လုပ်ဆောင်ချက်မျာသအပေါ် ကန့်သတ်ချက်မျာသကို မည်သို့သတ်မဟတ်နိုင်သည်၊ အပဌောင်သအလဲ sessions နဟင့် လုပ်ဆောင်နိုင်ပုံနဟင့် အခဌာသအရာမျာသစလာအကဌောင်သကိုလည်သ ဆလေသနလေသပါမည်။

source: www.habr.com

မဟတ်ချက် Add