2009-11-06 7 views
9

के लिए आधारित प्रोग्रामिंग सेट RBAR और this पर इस लिंक को पढ़ने के बाद, RBAR की मेरी समझ यह के बराबर है:RBAR बनाम एसक्यूएल

  1. कुछ भी है कि लूप और कर्सर
  2. कोई भी चीज जो सेट आधारित नहीं है

मैं जानता हूँ कि यह पूरी तरह थोड़े लगता है जिसके कारण मैं अगर किसी को क्या सेट-आधारित प्रोग्रामिंग (SQL संदर्भ में) है के रूप में एक अधिक सुरुचिपूर्ण व्याख्या है पूछ रहा हूँ।

उत्तर

13

सेट-आधारित प्रोग्रामिंग एक सेट की गणितीय अवधारणा पर आधारित है, और ऑपरेटर हैं जो एक समय में पूरे सेट पर काम करते हैं। प्रक्रियात्मक (आरबीएआर) प्रोग्रामिंग फाइलों और अभिलेखों की पारंपरिक कंप्यूटर अवधारणाओं पर आधारित है। तो 10% से विभाग एक्स में सभी कर्मचारियों के वेतन बढ़ाने के लिए:

सेट के आधार पर:

UPDATE employees SET salary = salary * 1.10 WHERE department = 'X'; 

प्रक्रियात्मक (चरम उदाहरण, छद्म कोड):

OPEN cursor FOR SELECT * FROM employees; 
LOOP 
    FETCH cursor INTO record; 
    EXIT WHEN (no more records to fetch); 
    IF record.department = 'X' THEN 
     UPDATE employees 
     SET salary = salary * 1.10 
     WHERE employee_id = record.employee_id; 
    END IF 
END LOOP 
CLOSE cursor; 

प्रक्रियात्मक में संस्करण, एक समय में केवल एक कर्मचारी पंक्ति अपडेट की जा रही है; सेट-आधारित संस्करण में, "विभाग एक्स में कर्मचारियों के सेट" में सभी पंक्तियां एक बार में अपडेट की जाती हैं (जहां तक ​​हम चिंतित हैं)।

यह सुनिश्चित नहीं है कि यह आपके लिंक में पहले से ही जो कुछ भी पढ़ेगा, उसमें कुछ भी जोड़ता है, लेकिन मैंने सोचा कि मेरे पास एक शॉट होगा!

+0

बेशक सेट-आधारित संस्करण लगभग हमेशा तेज होता है, साथ ही आमतौर पर बहुत अधिक होता है। – HLGEM

6

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

कुछ आरबीएआर प्रक्रिया कर्सर या लूप की तरह दिखती नहीं है। इनमें सहसंबंधित सबक्वायरी और कई उपयोगकर्ता परिभाषित फ़ंक्शंस शामिल होंगे।

+1

सहमत और अच्छी तरह से कहा। –

संबंधित मुद्दे