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

क्या ora_hash नियतात्मक है?

ORA_HASH निश्चित रूप से डेटा प्रकारों के लिए नियतात्मक है जिनका उपयोग विभाजन के लिए किया जा सकता है, जैसे कि NUMBER, VARCHAR, DATE, आदि।

लेकिन ORA_HASH नहीं है कम से कम कुछ अन्य डेटा प्रकारों के लिए नियतात्मक, जैसे कि CLOB।

मेरा उत्तर इस पर आधारित है ORA_HASH . के बारे में जोनाथन लुईस लेख ।

जोनाथन लुईस स्पष्ट रूप से यह नहीं कहते हैं कि वे नियतात्मक हैं, लेकिन उन्होंने उल्लेख किया है कि ORA_HASH "एक शून्य बीज के साथ आंतरिक रूप से उपयोग किया जाने वाला फ़ंक्शन प्रतीत होता है - यह निर्धारित करने के लिए कि हैश विभाजित तालिका में एक पंक्ति किस विभाजन से संबंधित है"। और यदि इसका उपयोग हैश विभाजन के लिए किया जाता है तो यह नियतात्मक होना चाहिए, अन्यथा विभाजन-वार जॉइन काम नहीं करेगा।

यह दिखाने के लिए कि ORA_HASH कुछ डेटा प्रकारों के लिए गैर-नियतात्मक हो सकता है, नीचे दी गई क्वेरी चलाएँ। यह उसी लेख की एक टिप्पणी से है:

with src as (select to_clob('42') val from dual connect by level<=5)
select val,ora_hash(val,7) from src order by 2;

हैरानी की बात यह है कि dbms_sqlhash.gethash . के साथ भी यही समस्या होती है ।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. डेटाटाइम कॉलम को यूटीसी टाइम में बदलें

  2. OracleCommand SQL पैरामीटर्स बाइंडिंग

  3. जावा दिनांक हाइबरनेट कट ऑफ टाइम

  4. XA Oracle 11g को कैसे सक्षम करें

  5. दिनांक सीमाओं के साथ सबसे अधिक ओवरलैपिंग समयावधि कैसे खोजें