मैं ओरेकल का उपयोग कर रहा हूं, और मेरे पास एक बहुत बड़ी मेज है। मुझे कुछ सरल मानदंडों की बैठक में किसी भी पंक्ति के अस्तित्व की जांच करने की आवश्यकता है। सरल एसक्यूएल का उपयोग करके इस बारे में जाने का सबसे अच्छा तरीका क्या है?ओरेकल में एक पंक्ति के अस्तित्व की जांच करने के लिए सबसे तेज क्वेरी?
यहाँ मेरी सर्वश्रेष्ठ अनुमान दिया है, और जब तक इसे बाहर बारी मेरी प्रयोजनों के लिए काफी तेजी से हो सकता है, मैं एक विहित रास्ता मूल रूप से एसक्यूएल सर्वर के ऐसा करने के लिए सीखने के लिए अच्छा लगेगा "मौजूद है" Oracle में:
select count(x_id) from x where x.col_a = value_a and x.col_b = value_b;
गिनती() को एक और स्तर में एक बूलियन के रूप में वापस कर दिया जाएगा। मुख्य बिंदु यह है कि मैं ओरेकल को इस प्रश्न के लिए न्यूनतम न्यूनतम करना चाहता हूं - मुझे केवल यह जानने की जरूरत है कि मानदंडों से मेल खाने वाली कोई पंक्तियां हैं या नहीं।
और हाँ, उन कॉलम को निश्चित रूप से अनुक्रमित किया जाएगा।
@ टोनी जैसे IF EXISTS का उपयोग नहीं कर सकते - क्या आप EXISTS के बजाय गिनती (*) करेंगे? मेरे लिए, यदि आप अपवाद से निपटने की ज़रूरत है तो भी एक EXISTS अधिक प्राकृतिक लगता है। –
क्या आपका मतलब है "जहां मौजूद दोहरी से 1 का चयन (...)"? मैं नहीं करूँगा, लेकिन समझ सकता हूं कि कुछ क्यों करेंगे। वास्तव में वास्तव में प्राकृतिक होना चाहता है एक पीएल/एसक्यूएल निर्माण है जैसे "अगर मौजूद है (चुनें ...) तो ..."! –
मैं इसे अपने आप परीक्षण नहीं द्वारा यहाँ आलसी जा रहा हूँ, लेकिन गिनती नहीं होगा (x_id) की तुलना में गिनती (*) तेज हो सकता है, या एसक्यूएल दुभाषिया बहुत चालाक देखने के लिए कि यह वास्तव में विस्तार करने के लिए की जरूरत नहीं है कि "*" ? –