sql >> Databáze >  >> RDS >> Oracle

Oracle získá DISTINCT numeric s CLOB v dotazu

Pokud zahašujete clob, můžete jej použít v poddotazu k získání maximálního rowid pro každý eventid_nbr se stejnou hodnotou hash clob. Pak už jen vyfiltrujete svou tabulku relationship_two v klauzuli where.

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);

3 v HASH specifikované SHA, ale můžete také použít MD4 (1) nebo MD5 (2), pokud chcete.

Myslím, že by to mohlo být velmi pomalé, pokud máte v tabulce RELATION_TWO mnoho řádků a jsem si jistý, že to lze zapsat tak, aby fungovalo lépe, ale koncept je dobrý.




  1. Optimalizujte dotaz, který seskupuje výsledky podle pole ze spojené tabulky

  2. Podřízený proces Apache byl ukončen se stavem 255

  3. Jak přidáte tlačítko pro úpravy do každého řádku v sestavě v Oracle APEX?

  4. Jak získat klíčová pole pro tabulku ve funkci plpgsql?