请帮助调整以下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
答案 0 :(得分: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列。