0

请帮助调整以下sql查询,执行大约需要3个小时,我做得对吗?

SELECT COUNT(P.POSTID)
    FROM QUAD.PostVersion P
    INNER JOIN QUAD.PostMapping PM
    ON PM.PostID       = P.PostID
    AND PM.LASTVERSION = P.VERSION
    INNER JOIN QUAD.USER_ U
    ON P.MODIFIEDUSERID = U.USERID
    WHERE content IS NOT NULL
    AND DBMS_LOB.INSTR(UPPER(content),'LINK') > 0
4

1 回答 1

0

需要注意的两个问题 - 对于大量文本,正则表达式将比 INSTR+UPPER 更快,并确保不会对来自表中的每条记录的条件进行多次评估。第一次使用 REGEXP_LIKE(),第二次需要知道content来自哪个表。

SELECT COUNT(P.POSTID)
    FROM QUAD.PostVersion P
    INNER JOIN QUAD.PostMapping PM
    ON PM.PostID       = P.PostID
    AND PM.LASTVERSION = P.VERSION
    INNER JOIN QUAD.USER_ U
    ON P.MODIFIEDUSERID = U.USERID
    WHERE REGEXP_LIKE(content,'LINK','i') 

注意:REGEXP_LIKE 支持 CHAR、VARCHAR2、NCHAR、NVARCHAR2、CLOB 或 NCLOB 列。

于 2013-05-30T10:39:53.230 回答