以下查询需要更多时间才能给出结果。这个查询在exists子句内部运行,而且这个查询还有stuff函数。有没有办法优化或重写这个查询?。
AND EXISTS(SELECT 1
FROM
(SELECT DISTINCT
F_ALIAS,
F_DATA_CODE,
STUFF((SELECT ', ' + A.F_DATA
FROM T_REP_DATA A
WHERE A.F_ALIAS = RPDS.F_ALIAS
AND A.F_DATA_CODE = RPDS.F_DATA_CODE
AND '1:WVTST{PROD006' = A.F_ALIAS
FOR XML PATH(''), TYPE).value( '.', 'NVARCHAR(MAX)'), 1, 2, '') F_DATA
FROM T_REP_DATA RPDS
INNER JOIN
(SELECT DISTINCT F_CUSTOM2
FROM T_MSDSTYPES
WHERE (F_CUSTOM2 IS NOT NULL AND F_CUSTOM2 != '')) MT ON MT.F_CUSTOM2 = RPDS.F_DATA_CODE and RPDS.F_ALIAS = '1:WVTST{PROD006') RPDS_CUSTOM2)
WHERE RPDS_CUSTOM2.F_DATA LIKE 'MANU'
答案 0 :(得分:4)
你的查询可能根本不正确(LIKE 'MANU'
实际上意味着= 'MANU'
),但是你的查询可能正在做(或者应该做)只不过:
AND EXISTS(
SELECT 1
FROM T_REP_DATA RPDS
INNER JOIN T_MSDSTYPES MT
ON MT.F_CUSTOM2 = RPDS.F_DATA_CODE
WHERE RPDS.F_ALIAS = '1:WVTST{PROD006'
AND RPDS.F_DATA = 'MANU'
)
更具体的答案需要更多细节。