कॉन्सेप्ट गाइड से :
ROWID का मुख्य दोष यह है कि यह सामान्य रूप से स्थिर होने के बावजूद कुछ परिस्थितियों में बदल सकता है:
- टेबल को फिर से बनाया गया है (
ALTER TABLE MOVE
...) - निर्यात/आयात स्पष्ट रूप से
- पंक्ति आंदोलन के साथ विभाजन तालिका सक्षम
प्राथमिक कुंजी तार्किक रूप से . पंक्ति की पहचान करती है , आपको हमेशा सही पंक्ति मिलेगी, यहां तक कि डिलीट+इन्सर्ट के बाद भी। ROWID भौतिक रूप से row पंक्ति की पहचान करता है और प्राथमिक कुंजी की तरह स्थायी नहीं है।
आप सुरक्षित रूप से एक एकल SQL कथन में ROWID का उपयोग कर सकते हैं क्योंकि Oracle गारंटी देगा कि परिणाम सुसंगत है, उदाहरण के लिए किसी तालिका में डुप्लिकेट को हटाने के लिए। सुरक्षित रहने के लिए, मेरा सुझाव है कि आप केवल ROWID विवरणों के पार . का उपयोग करें जब आपके पास पंक्ति पर लॉक होता है (चुनें ... अद्यतन के लिए)।
एक प्रदर्शन के दृष्टिकोण से, प्राथमिक कुंजी का उपयोग थोड़ा अधिक महंगा है, लेकिन आप इसे सामान्य रूप से तभी नोटिस करेंगे जब आप बहुत सी एकल पंक्ति का उपयोग करते हैं। यदि प्रदर्शन महत्वपूर्ण है, तो आप आमतौर पर उस मामले में पंक्तिबद्ध के साथ एकल पंक्ति प्रसंस्करण की तुलना में सेट प्रसंस्करण का उपयोग करने से अधिक लाभ प्राप्त कर सकते हैं। विशेष रूप से, यदि डीबी और एप्लिकेशन के बीच कई राउंडट्रिप हैं, तो राउंडट्रिप्स की लागत की तुलना में रो एक्सेस की लागत शायद नगण्य होगी।