Explorar o código

查询效率优化

zhaops %!s(int64=4) %!d(string=hai) anos
pai
achega
50090f60a7
Modificáronse 1 ficheiros con 16 adicións e 12 borrados
  1. 16 12
      cdssman-service/src/main/resources/mapper/HospitalInfoMapper.xml

+ 16 - 12
cdssman-service/src/main/resources/mapper/HospitalInfoMapper.xml

@@ -58,18 +58,22 @@
         LEFT JOIN (
         SELECT
         hospital_id,
-        sum( type = 1 )* num AS lisNum,
-        sum( type = 3 )* num AS pacsNum,
-        sum( type = 4 )* num AS diseaseNum,
-        sum( type = 5 )* num AS drugNum,
-        sum( type = 6 )* num AS operationNum,
-        sum( type = 7 )* num AS deptNum,
-        sum( type = 8 )* num AS transfusionNum,
-        sum( type = 10 )* num AS scaleNum,
-        sum( type = 11 )* num AS nurseNum,
-        sum( type = 12 )* num AS tcmdiseaseNum,
-        sum( type = 13 )* num AS tcmsyndromeNum,
-        sum( type = 14 )* num AS anesthesiaNum
+        sum( IF ( type = 1, num, 0 ) ) AS lisNum,
+        sum( IF ( type = 3, num, 0 ) ) AS pacsNum,
+        sum( IF ( type = 4, num, 0 ) ) AS diseaseNum,
+        sum( IF ( type = 5, num, 0 ) ) AS drugNum,
+        sum( IF ( type = 6, num, 0 ) ) AS operationNum,
+        sum( IF ( type = 7, num, 0 ) ) AS deptNum,
+        sum( IF ( type = 8, num, 0 ) ) AS transfusionNum,
+        sum( IF ( type = 10, num, 0 ) ) AS scaleNum,
+        sum( IF ( type = 11, num, 0 ) ) AS nurseNum,
+        sum( IF ( type = 12, num, 0 ) ) AS tcmdiseaseNum,
+        sum( IF ( type = 13, num, 0 ) ) AS tcmsyndromeNum,
+        sum( IF ( type = 14, num, 0 ) ) AS anesthesiaNum
+        FROM
+        ( SELECT hospital_id, type, count(*) AS num FROM tran_mapping_config WHERE is_deleted = 'N' GROUP BY hospital_id, type ) t1
+        GROUP BY
+        hospital_id
         FROM
         ( SELECT hospital_id, type, count(*) AS num FROM tran_mapping_config WHERE is_deleted = 'N' GROUP BY hospital_id, type ) t1
         GROUP BY