查询时,如下sql查询多遍,会导致连接超时异常发生,借此想优化sql,添加索引,或是用别的方法提高查询速度
如下查询表
SELECT
NVL( loginCount, 0 ) loginCount,
NVL( activeCount, 0 ) activeCount
FROM
(
SELECT
count( 1 ) activeCount
FROM
PW_DOC_RECORD a
LEFT JOIN PW_EMP p ON a.USER_ID = p.EMP_ID
WHERE
EXISTS (
SELECT
1
FROM
PW_DOC_RECORD b
WHERE
1 = 1
AND b.DOC_RECORD_CTIME LIKE '2022-11-14'
AND b.DOC_RECORD_TYPE = 5
AND a.USER_ID = b.USER_ID
)
AND a.DOC_RECORD_CTIME LIKE '2022-11-14'
AND a.DOC_RECORD_TYPE = 1
AND a.DOC_TYPE = 'EN_PAPER'
AND a.USER_ID IN (
1766170754449410,
1647224677023749,
1925662769643522,
2332026535837701,
1807124434927623,
1736206813659144,
1708308471283717,
1797179590115330,
1797045667971077,
1764934172557314,
1758745208029192,
2011042357280772,
1747930863681539,
1647219971604483,
1647214177730566,
1829540520148995,
1762098208047108,
1804303825633288,
1647224680988674,
1766168050368514,
1651478949183496,
1770693270061058,
1790281924067332,
1651478947495939,
1829864354250752,
1731091880198151,
1647224676188161,
1745058766946308,
1759174924517378
)
ORDER BY
a.USER_ID
) active,
( SELECT count( 1 ) loginCount FROM PW_DOC_RECORD c WHERE 1 = 1 AND c.DOC_RECORD_CTIME LIKE '2022-11-14' AND c.DOC_RECORD_TYPE = 5 ) login
sql太长太复杂,建议将大sql做拆分,不要做太多的关联,将数据拉到内存里面做运算,将数据库服务器压力转移到内存