为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:DM8
【操作系统】:win10
【CPU】:
【问题描述】*:试图在blob或者clob列上排序或比较
sql语句:SELECT DISTINCT
RES.ID_ taskId ,
RES.TASK_DEF_KEY_ taskDefId ,
RES.NAME_ taskName ,
RES.PROC_INST_ID_ procInstId ,
RES.FORM_KEY_ formKey ,
DATE_FORMAT(RES.CREATE_TIME_, ‘%Y-%m-%d %H:%i:%s’) startTime,
VAR.TEXT_ bussinessTitle ,
PROC.START_USER_ID_ startUserId ,
AU.FIRST_ startUserName ,
DEF.KEY_ procdefKey ,
DEF.NAME_ procdefName ,
(
SELECT
RU.TEXT_
FROM
act_ru_variable RU
WHERE
RU.PROC_INST_ID_ = VAR.PROC_INST_ID_
AND RU.NAME_ = ?
)
bussinessValue,
(
SELECT
GE.BYTES_
FROM
act_ru_variable RU
LEFT JOIN act_ge_bytearray GE
ON
RU.BYTEARRAY_ID_ = GE.ID_
WHERE
RU.PROC_INST_ID_ = VAR.PROC_INST_ID_
AND RU.NAME_ = ?
)
bussinessByte
FROM
ACT_RU_TASK RES
LEFT JOIN act_ru_variable VAR
ON
RES.PROC_INST_ID_ = VAR.PROC_INST_ID_
LEFT JOIN ACT_HI_PROCINST PROC
ON
PROC.PROC_INST_ID_ = RES.PROC_INST_ID_
LEFT JOIN ACT_RE_PROCDEF DEF
ON
PROC.PROC_DEF_ID_ = DEF.ID_
LEFT JOIN act_id_user AU
ON
AU.ID_ = PROC.START_USER_ID_
WHERE
VAR.NAME_ = ?
AND NOT EXISTS
(
SELECT
ID_
FROM
ACT_RU_VARIABLE
WHERE
NAME_ = ?
AND RES.ID_ = TASK_ID_
)
AND RES.SUSPENSION_STATE_ = 1
AND
(
RES.ASSIGNEE_ = ?
OR
(
RES.ASSIGNEE_ IS NULL
AND EXISTS
(
SELECT
LINK.ID_
FROM
ACT_RU_IDENTITYLINK LINK
WHERE
LINK.TYPE_ = ‘candidate’
AND LINK.TASK_ID_ = RES.ID_
AND
(
LINK.USER_ID_ = ?
OR LINK.GROUP_ID_ IN ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )
)
)
)
)
ORDER BY
startTime DESC
您的sql中存在大字段分组排序功能,大字段进行分组排序本身是一个高资源消耗工作,且实际意义不大,不推荐使用。
如果大字段长度不是很长,且实在有需求,可以考虑开启一个功能性参数,执行如下sql
SP_SET_PARA_VALUE(1,'ENABLE_BLOB_CMP_FLAG',1);