为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:dm8
【操作系统】:
【CPU】:
【问题描述】*:
数据量整体不大,1w条以内。正常查询速度非常快,1s内出来。但是加入排序之后查询需要40s左右。
sql如下:
SELECT
T.*
FROM
(
SELECT
K.*,
TCS.TESTCATEGORY,
TCS.SEGMENTNAME TESTTYPE,
TCS.SAMPLENATURE
FROM
(
SELECT
L.TESTNAME TESTNAME,
L.ID LIMSTESTID,
L.ID TESTID,
L.ID,
L.COMPANY,
concat_ws(' ',
B.STDCODE,
B.STANDSRDNAME) STDCODENAME,
concat_ws(' ',
A.SECTNO,
A.SECTNAME) SECNONAME,
A.ID METHODSECTIONID,
A.REPORTNAME REPORTNAME,
A.METHODNAME METHODNAME,
A.SECTNO SECTNO,
A.SECTNAME SECTNAME,
B.STANDSRDNAME STANDSRDNAME,
B.STDCODE ,
L.TESTCATSEGMENTID,
R.ORGID,
R.ORGNAME,
R.ID AS METHODRELATEDTOTEST,
R.TMPLELNID,
R.TMPLELNNAME,
R.FULLNAME,
R.FULLCODE,
R.CHECKFULLCODE,
R.CHECKFULLNAME,
R.SHOWPADFLAG,
R.CONTROLNO AS TESTCONTROLNO
FROM
(
SELECT
*
FROM
T_LIMS_METHODRELATEDTOTEST mrt
WHERE
(mrt.DEFAULTMETHODFLAG = '1'
OR NOT EXISTS (
SELECT
testid
FROM
T_LIMS_METHODRELATEDTOTEST sub
WHERE
DEFAULTMETHODFLAG = '1'
AND mrt.TESTID = sub.TESTID ) )
AND mrt.ACTIVATEDFLAG = 1 ) R
LEFT JOIN T_LIMS_METHOD_SECTION A ON
R.SECTIONID = A.ID
LEFT JOIN T_LIMS_METHOD B ON
A.METHODID = B.ID
LEFT JOIN T_LIMS_TEST L ON
R.TESTID = L.ID
INNER JOIN (
SELECT
METHODRELATEDTOTESTID,
MAX(DISPLAYFLAG)
FROM
t_lims_analyte
WHERE
DISPLAYFLAG = 1
GROUP BY
METHODRELATEDTOTESTID ) analyte ON
analyte.METHODRELATEDTOTESTID = R.ID
WHERE
L.ID IS NOT NULL
AND L.ACTIVATEDFLAG = 1 ) K
LEFT JOIN T_LIMS_TESTCATSEGMENT TCS ON
TCS.ID = K.TESTCATSEGMENTID ) T
WHERE
( "COMPANY" = 'FDAF' )
AND EXISTS (
SELECT
1
FROM
T_LIMS_TESTCATSEGMENTDEPT TSD
WHERE
TSD.TESTCATSEGMENTID = T.TESTCATSEGMENTID
AND EXISTS (
SELECT
1
FROM
(
SELECT
up_.*
FROM
T_CORE_USER_PERMISSION UP_
WHERE
UP_.USERID = 'admin'
AND UP_.PERMISSIONTYPEID = 'T_CORE_ORG') U
LEFT JOIN T_CORE_ORG O_ ON
O_.ID = U.TARGETID
WHERE
(O_.ID = TSD.CORPID
OR EXISTS (
SELECT
1
FROM
T_CORE_ORG O1
WHERE
O1.ID = TSD.CORPID
AND O1.PARENTID = O_.ID)
OR (EXISTS (
SELECT
1
FROM
T_CORE_ORG O1
WHERE
O1.ID = TSD.CORPID
AND O1.ID = O_.PARENTID )
AND O_.ORGCATEGORY = '3') )
AND O_.PARENTID IS NOT NULL) )
ORDER BY
SAMPLENATURE
执行计划如下:
您在select 后加/*+ no_use_cvt_with_var */ 试试