这是一个使用了多个表连接的SQL查询语句,同时包含了子查询和多个条件筛选。

为了优化这个查询,可以考虑以下几点:

  1. 索引优化:确保相关的字段上有适当的索引,特别是在连接字段上创建索引,例如pee.APPRAISEE_IDptwg.NAMEpee.WEIGHT_GROUP_NAMEpeay.TEMPLATE_VERSION_IDpeay.idpee.ACTIVITY_IDpee.EXAMINER_IDpeae.EXAMINER_IDpeae.ACTIVITY_ID

  2. 优化子查询:子查询EXISTS语句中的条件可以进一步优化,确保所使用的字段上有适当的索引。

  3. 选择性投影:只选择需要的字段,而不是使用SELECT *。这样可以减少数据传输和内存消耗。

  4. 考虑使用内连接:如果可能的话,将左连接改为内连接,以减少连接的数据量。

  5. 调整查询顺序:根据数据表的大小和索引情况,可以调整表的连接顺序,将过滤条件更加选择性的表放在前面。

综上所述,可以尝试优化的查询语句如下:

SELECT pee.* 
FROM PFQA_EXAMINE_EVALUATION pee 
INNER JOIN PFQA_EVALUATION_APPRAISEE pea ON pee.APPRAISEE_ID = pea.ID
INNER JOIN PFQA_TEMPLATE_WEIGHT_GROUP ptwg ON ptwg.NAME = pee.WEIGHT_GROUP_NAME 
INNER JOIN PFQA_EVALUATION_ACTIVITY peay ON peay.TEMPLATE_VERSION_ID = ptwg.TEMPLATE_VERSION_ID 
WHERE 
    pee.ACTIVITY_ID = 'c9a813d114e33a2f46f6b17861952a7b'
    AND peay.id = 'c9a813d114e33a2f46f6b17861952a7b'
    AND EXISTS (
        SELECT 1 
        FROM PFQA_EXAMINER_ACTIV_EVALUATION peae 
        WHERE pee.EXAMINER_ID = peae.EXAMINER_ID 
        AND peae.ACTIVITY_ID  = 'c9a813d114e33a2f46f6b17861952a7b'
        AND peae.STATUS = 3
    )

请注意,以上优化仅供参考,实际效果需要结合具体的数据库和数据表情况进行测试和调整

SQL优化 SELECT FROM PFQA_EXAMINE_EVALUATION pee LEFT JOIN PFQA_EVALUATION_APPRAISEE pea ON peeAPPRAISEE_ID = peaID LEFT JOIN PFQA_TEMPLATE_WEIGHT_GROUP ptwg ON ptwgNAME = peeWEIGHT_GROUP_NAME

原文地址: https://www.cveoy.top/t/topic/iVVS 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录