You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
268 lines
8.6 KiB
268 lines
8.6 KiB
-- MySQL 5.7.21:只读诊断脚本,请先选中生产业务库。 |
|
-- 下面默认查询全部时间、全部单位,与列表初次打开一致。 |
|
-- 请先返回本文件的版本、行数估计、索引、8 份 EXPLAIN 结果;不要先执行建索引脚本。 |
|
-- EXPLAIN 不返回业务明细,不代表真实耗时;验证耗时需另行运行实际 SQL。 |
|
SELECT VERSION(), DATABASE(); |
|
SELECT TABLE_NAME, TABLE_ROWS FROM information_schema.TABLES |
|
WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME IN ('negative','negative_blame','sup_police','sup_depart','sup_depart_police_size'); |
|
SHOW INDEX FROM negative; |
|
SHOW INDEX FROM negative_blame; |
|
SHOW INDEX FROM sup_police; |
|
SHOW INDEX FROM sup_depart; |
|
SHOW INDEX FROM sup_depart_police_size; |
|
|
|
SET @beginTime = '1949-01-01 00:00:00'; |
|
SET @endTime = NOW(); |
|
|
|
-- 单位问题库:优化前列表查询(第一页 10 条) |
|
EXPLAIN |
|
SELECT |
|
d.id depart_id, |
|
d1.short_name parent_depart_name, |
|
d.short_name depart_name, |
|
p.police_size, |
|
p.aux_size, |
|
count(DISTINCT nb.blameIdCode) verify_police_size, |
|
count(DISTINCT n.id) verify_size |
|
FROM sup_depart d |
|
LEFT JOIN sup_depart d1 ON d.pid = d1.id |
|
LEFT JOIN sup_depart_police_size p ON p.depart_id = d.id |
|
INNER JOIN negative n ON d.id = n.involveDepartId |
|
LEFT JOIN negative_blame nb ON n.id = nb.negativeId |
|
WHERE d.level = 3 |
|
AND n.crtTime BETWEEN @beginTime AND @endTime |
|
|
|
|
|
|
|
GROUP BY d.id, d1.short_name, d.short_name, p.police_size, p.aux_size |
|
ORDER BY |
|
verify_size |
|
DESC , d.id ASC |
|
LIMIT 0, 10; |
|
|
|
-- 单位问题库:优化前分页总数 |
|
EXPLAIN |
|
SELECT count(*) FROM ( |
|
SELECT |
|
d.id depart_id, |
|
d1.short_name parent_depart_name, |
|
d.short_name depart_name, |
|
p.police_size, |
|
p.aux_size, |
|
count(DISTINCT nb.blameIdCode) verify_police_size, |
|
count(DISTINCT n.id) verify_size |
|
FROM sup_depart d |
|
LEFT JOIN sup_depart d1 ON d.pid = d1.id |
|
LEFT JOIN sup_depart_police_size p ON p.depart_id = d.id |
|
INNER JOIN negative n ON d.id = n.involveDepartId |
|
LEFT JOIN negative_blame nb ON n.id = nb.negativeId |
|
WHERE d.level = 3 |
|
AND n.crtTime BETWEEN @beginTime AND @endTime |
|
|
|
|
|
|
|
GROUP BY d.id, d1.short_name, d.short_name, p.police_size, p.aux_size |
|
) counted; |
|
|
|
-- 单位问题库:优化后列表查询(第一页 10 条) |
|
EXPLAIN |
|
SELECT DISTINCT |
|
d.id depart_id, |
|
d1.short_name parent_depart_name, |
|
d.short_name depart_name, |
|
p.police_size, |
|
p.aux_size, |
|
stats.verify_police_size, |
|
stats.verify_size |
|
FROM ( |
|
SELECT d.id depart_id, |
|
count(DISTINCT nb.blameIdCode) verify_police_size, |
|
count(DISTINCT n.id) verify_size |
|
FROM sup_depart d |
|
INNER JOIN negative n ON n.involveDepartId = CAST(d.id AS CHAR CHARACTER SET utf8) COLLATE utf8_general_ci |
|
LEFT JOIN negative_blame nb ON nb.negativeId = CONVERT(n.id USING utf8) COLLATE utf8_general_ci |
|
WHERE |
|
d.level = 3 |
|
|
|
|
|
|
|
|
|
AND n.crtTime BETWEEN @beginTime AND @endTime |
|
GROUP BY d.id |
|
) stats |
|
INNER JOIN sup_depart d ON d.id = stats.depart_id |
|
LEFT JOIN sup_depart d1 ON d.pid = d1.id |
|
LEFT JOIN sup_depart_police_size p ON p.depart_id = CAST(d.id AS CHAR CHARACTER SET utf8) COLLATE utf8_general_ci |
|
ORDER BY |
|
verify_size |
|
DESC , d.id ASC |
|
LIMIT 0, 10; |
|
|
|
-- 单位问题库:优化后分页总数 |
|
EXPLAIN |
|
SELECT count(*) FROM ( |
|
SELECT DISTINCT d.id, p.police_size, p.aux_size |
|
FROM sup_depart d |
|
LEFT JOIN sup_depart_police_size p ON p.depart_id = CAST(d.id AS CHAR CHARACTER SET utf8) COLLATE utf8_general_ci |
|
WHERE |
|
d.level = 3 |
|
|
|
|
|
|
|
|
|
AND EXISTS ( |
|
SELECT 1 FROM negative n |
|
WHERE n.involveDepartId = CAST(d.id AS CHAR CHARACTER SET utf8) COLLATE utf8_general_ci |
|
AND n.crtTime BETWEEN @beginTime AND @endTime |
|
) |
|
) counted; |
|
|
|
-- 个人问题库:优化前列表查询(第一页 10 条) |
|
EXPLAIN |
|
SELECT |
|
p.id_code, |
|
p.NAME, |
|
p.emp_no, |
|
p.position, |
|
p.employment_date, |
|
p.person_type, |
|
d.short_name depart_name, |
|
d.id depart_id, |
|
d1.short_name parent_depart_name, |
|
count(DISTINCT n.id) verify_size |
|
FROM |
|
sup_police p |
|
LEFT JOIN sup_depart d ON p.org_id = d.id |
|
LEFT JOIN sup_depart d1 ON d.pid = d1.id and d1.level >= 2 |
|
INNER JOIN negative_blame nb ON p.id_code = nb.blameIdCode AND nb.type = 'personal' |
|
INNER JOIN negative n ON nb.negativeId = n.id |
|
WHERE |
|
p.del = 0 |
|
AND n.checkStatus IN ('1', '2') |
|
AND n.processing_status = 'completed' |
|
AND n.discoveryTime BETWEEN @beginTime AND @endTime |
|
|
|
|
|
|
|
|
|
|
|
GROUP BY |
|
p.id_code, |
|
p.NAME, |
|
p.emp_no, |
|
p.employment_date, |
|
p.position, |
|
p.person_type, |
|
d.short_name, |
|
d.id, |
|
d1.short_name |
|
ORDER BY |
|
verify_size |
|
DESC , p.id_code ASC |
|
LIMIT 0, 10; |
|
|
|
-- 个人问题库:优化前分页总数 |
|
EXPLAIN |
|
SELECT count(*) FROM ( |
|
SELECT |
|
p.id_code, |
|
p.NAME, |
|
p.emp_no, |
|
p.position, |
|
p.employment_date, |
|
p.person_type, |
|
d.short_name depart_name, |
|
d.id depart_id, |
|
d1.short_name parent_depart_name, |
|
count(DISTINCT n.id) verify_size |
|
FROM |
|
sup_police p |
|
LEFT JOIN sup_depart d ON p.org_id = d.id |
|
LEFT JOIN sup_depart d1 ON d.pid = d1.id and d1.level >= 2 |
|
INNER JOIN negative_blame nb ON p.id_code = nb.blameIdCode AND nb.type = 'personal' |
|
INNER JOIN negative n ON nb.negativeId = n.id |
|
WHERE |
|
p.del = 0 |
|
AND n.checkStatus IN ('1', '2') |
|
AND n.processing_status = 'completed' |
|
AND n.discoveryTime BETWEEN @beginTime AND @endTime |
|
|
|
|
|
|
|
|
|
|
|
GROUP BY |
|
p.id_code, |
|
p.NAME, |
|
p.emp_no, |
|
p.employment_date, |
|
p.position, |
|
p.person_type, |
|
d.short_name, |
|
d.id, |
|
d1.short_name |
|
) counted; |
|
|
|
-- 个人问题库:优化后列表查询(第一页 10 条) |
|
EXPLAIN |
|
SELECT DISTINCT |
|
p.id_code, p.name, p.emp_no, p.position, p.employment_date, p.person_type, |
|
d.short_name depart_name, d.id depart_id, d1.short_name parent_depart_name |
|
, stats.verify_size |
|
FROM ( |
|
SELECT nb.blameIdCode, count(DISTINCT n.id) verify_size |
|
FROM negative n |
|
INNER JOIN negative_blame nb ON nb.negativeId = n.id |
|
WHERE |
|
nb.type = 'personal' |
|
AND n.checkStatus IN ('1', '2') |
|
AND n.processing_status = 'completed' |
|
AND n.discoveryTime BETWEEN @beginTime AND @endTime |
|
|
|
GROUP BY nb.blameIdCode |
|
) stats |
|
INNER JOIN sup_police p ON p.id_code = stats.blameIdCode |
|
LEFT JOIN sup_depart d ON p.org_id = d.id |
|
LEFT JOIN sup_depart d1 ON d.pid = d1.id AND d1.level >= 2 |
|
WHERE |
|
p.del = 0 |
|
|
|
|
|
|
|
|
|
|
|
ORDER BY verify_size |
|
DESC , p.id_code ASC |
|
LIMIT 0, 10; |
|
|
|
-- 个人问题库:优化后分页总数 |
|
EXPLAIN |
|
SELECT count(*) FROM ( |
|
SELECT DISTINCT |
|
p.id_code, p.name, p.emp_no, p.position, p.employment_date, p.person_type, |
|
d.short_name depart_name, d.id depart_id, d1.short_name parent_depart_name |
|
|
|
FROM sup_police p |
|
LEFT JOIN sup_depart d ON p.org_id = d.id |
|
LEFT JOIN sup_depart d1 ON d.pid = d1.id AND d1.level >= 2 |
|
WHERE |
|
p.del = 0 |
|
|
|
|
|
|
|
|
|
|
|
AND EXISTS ( |
|
SELECT 1 FROM negative_blame nb |
|
WHERE nb.blameIdCode = p.id_code AND nb.type = 'personal' |
|
AND EXISTS ( |
|
SELECT 1 FROM negative n |
|
WHERE n.id = nb.negativeId |
|
AND |
|
n.checkStatus IN ('1', '2') |
|
AND n.processing_status = 'completed' |
|
AND n.discoveryTime BETWEEN @beginTime AND @endTime |
|
|
|
) |
|
) |
|
) counted;
|
|
|