该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
百万数据查询慢,大家帮忙sql语句优化下,查询贼慢
SELECT * FROM (SELECT qua.qua_id,
qua.row_status,
exam.numbers,
exam.exam_id,
app.class_code,
app.class_id,
pur.res_name,
pur.region_name,
pur.job_name,
exam.row_addtime,
exam.audit_status,
bmb.valid_flag,
bmb.stu_count
FROM gx_score_quali qua,
gx_exam exam,
gx_class_apply app,
(SELECT tu.class_id,
qub.qua_id,
co.valid_flag,
count(1) stu_count
FROM gx_class_apply_stu tu,
gx_score co,
gx_exam_stu s,
gx_score_quali qub
WHERE tu.cstu_id = s.cstu_id
AND (to_number(co.score_num1) *
to_number(qub.num1) + to_number(co.score_num2) *
to_number(qub.num2)) >=
to_number(qub.qua_sco) * 100
AND qub.row_status = '1'
AND co.estu_id = s.estu_id
GROUP BY tu.class_id, co.valid_flag, qub.qua_id
UNION ALL
SELECT tu2.class_id,
qub2.qua_id,
co2.valid_flag,
count(1) stu_count
FROM gx_class_apply_stu tu2,
view_gx_score co2,
gx_exam_stu s2,
gx_score_quali qub2
WHERE tu2.cstu_id = s2.cstu_id
AND (to_number(co2.score_num1) *
to_number(qub2.num1) + to_number(co2.score_num2) *
to_number(qub2.num2)) >=
to_number(qub2.qua_sco) * 100
AND to_number(co2.score_num2) >= 50
AND to_number(co2.score_num1) >= 50
AND qub2.row_status = '2'
AND co2.estu_id = s2.estu_id
GROUP BY tu2.class_id, co2.valid_flag, qub2.qua_id) bmb,
view_gx_res_pur pur
WHERE exam.class_id = app.class_id
AND app.pur_id = pur.pur_id
AND bmb.class_id = app.class_id
AND bmb.qua_id = qua.qua_id
AND TRIM(qua.yue) = TRIM(exam.numbers)
AND qua.job_id = pur.job_id
ORDER BY exam.row_addtime DESC)
WHERE audit_status = '2'
AND valid_flag = '1'
ORDER BY row_addtime ASC
查询了用了几十秒,大家帮忙看看