Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

क्या पीएल/एसक्यूएल प्रक्रियाओं में नेस्टेड ब्लॉक का कोई प्रदर्शन प्रभाव पड़ता है?

वे नहीं दिखते:

set timing on
set serveroutput on

declare
  x number := 0;
begin
  dbms_output.put_line('No inner blocks');
  for i in 1..1000000 loop
    x := x + 1;
  end loop;
  dbms_output.put_line(x);
end;
/

anonymous block completed
Elapsed: 00:00:00.095
No inner blocks
1000000

एक ही समय में चलता है, हर तरह से थोड़ी भिन्नता के साथ:

declare
  x number := 0;
begin
  dbms_output.put_line('Nested inner blocks');
  for i in 1..1000000 loop
    begin
      begin
        begin
          begin
            x := x + 1;
          exception
            when others then
              raise;
          end;
        exception
          when others then
            raise;
        end;
      exception
        when others then
          raise;
      end;
    exception
      when others then
        raise;
    end;
  end loop;
  dbms_output.put_line(x);
end;
/

anonymous block completed
Elapsed: 00:00:00.090
Nested inner blocks
1000000

बेशक यह संभव है कि संकलक अनावश्यक परतों को हटा रहा है, लेकिन मुझे यकीन नहीं है कि यह वास्तव में अपवाद हैंडलर के साथ हो सकता है क्योंकि यह परिणाम को प्रभावित करेगा।

मैंने इस बात पर कोई सीमा नहीं देखी है कि नेस्टेड ब्लॉक कितने गहरे जा सकते हैं - दस्तावेज़ीकरण केवल 'ब्लॉक को नेस्टेड किया जा सकता है' कहता है। आप जिस मॉडल का उपयोग कर रहे हैं, एक विशिष्ट त्रुटि पकड़ रही है और दूसरों को प्रचारित कर रही है, वह ठीक और सुंदर मानक है - हालांकि स्पष्ट रूप से आपके काल्पनिक उदाहरण में यह आवश्यक नहीं है, लेकिन आप इसे जानते हैं।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. INMEMORY पार्टीशन से डेटा कैसे एकत्रित करें?

  2. JDBC स्वचालित क्वेरी बहुत धीमी हो गई

  3. Oracle SQL में कॉम्प्लेक्स IF स्टेटमेंट का उपयोग करना

  4. Oracle SYS_REFCURSOR रिटर्न प्रकार के रूप में उपयोग नहीं कर सका

  5. क्वेरी से START के साथ एक अनुक्रम बनाएं