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

Oracle को क्वेरी में CLOB के साथ DISTINCT संख्यात्मक मिलता है

यदि आपके पास क्लॉब हैश है, तो आप एक ही क्लॉब हैश मान के साथ प्रत्येक eventid_nbr के लिए अधिकतम पंक्ति को पकड़ने के लिए इसे सबक्वायरी में उपयोग कर सकते हैं। फिर आप अपने संबंध_दो तालिका को जहां क्लॉज में फ़िल्टर करें।

SELECT EVENTID_NBR, INPUT_ARGS 

FROM RELATION_ONE, RELATION_TWO 

WHERE RELATION_ONE.LOGID_NBR = RELATION_TWO.LOGID_NBR AND 
  EVENTID_NBR BETWEEN 143 AND 192 AND 
  EVENTID_NBR != 172 AND SYSDATE - 7 >= RELATION_ONE.LAST_UPDATED

  AND (RELATION_TWO.EVENTID_NBR, RELATION_TWO.ROWID) IN
      (SELECT DISTINCT EVENTID_NBR,
       MAX(ROWID) OVER (PARTITION BY EVENTID_NBR, DBMS_HASH(INPUT_ARGS,3))
       FROM RELATION_TWO);

HASH में निर्दिष्ट SHA में 3, लेकिन आप चाहें तो MD4 (1) या MD5 (2) का भी उपयोग कर सकते हैं।

मुझे लगता है कि यह बहुत धीमा हो सकता है यदि आपके पास RELATION_TWO तालिका में बहुत सी पंक्तियां हैं और मुझे यकीन है कि इसे बेहतर प्रदर्शन करने के लिए लिखा जा सकता है, लेकिन अवधारणा ध्वनि है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. sqlplus - IN क्लॉज में बाइंड वेरिएबल का उपयोग करना

  2. मैं रेल में GROUP_CONCAT का उपयोग कैसे कर सकता हूं?

  3. क्या CASE स्टेटमेंट और DECODE समकक्ष हैं?

  4. Oracle में एक कॉलम के शीर्ष n विशिष्ट मान

  5. Oracle:किसी IPv4 पते को किसी संख्या में परिवर्तित करना?