Browse Source

优化邻里党群我的群列表查询慢问题

dev solveMyGroupSqlSlowly
liuchuang 6 years ago
parent
commit
35c491a3e3
  1. 89
      esua-epdc/epdc-module/epdc-group/epdc-group-server/src/main/resources/mapper/group/GroupDao.xml

89
esua-epdc/epdc-module/epdc-group/epdc-group-server/src/main/resources/mapper/group/GroupDao.xml

@ -108,29 +108,30 @@
<select id="selectListGroupsOfMine" resultType="com.elink.esua.epdc.dto.group.result.GroupsOfMineResultDTO">
SELECT
tmp.ID,
tmp.GROUP_NAME,
tmp.GROUP_AVATAR,
tmp.GROUP_CATEGORY,
tmp.STATE,
tmp.totalNum,
tmp.partyMemberNum,
tmp.unreadTopicNum,
tmp.latestTopicTime,
CASE
WHEN tmp.STATE = 0 THEN
t.ID,
t.GROUP_NAME,
t.GROUP_AVATAR,
t.GROUP_CATEGORY,
t.STATE,
t.totalNum,
t.partyMemberNum,
COUNT( DISTINCT ugpr.ID ) AS unreadTopicNum,
MAX( tp.CREATED_TIME ) AS latestTopicTime,
CASE
WHEN t.STATE = 0 THEN
'网格长会尽快审核您创建的社群,请耐心等待'
WHEN tmp.STATE = 5 THEN
tmp.PROCESSING_OPINIONS
WHEN t.STATE = 5 THEN
t.PROCESSING_OPINIONS
WHEN (
tmp.STATE = 10
AND totalNum <![CDATA[ <= ]]> 1
AND tmp.GROUP_CATEGORY = '1'
AND tmp.topicNum = 0
t.STATE = 10
AND t.totalNum <![CDATA[ <= ]]> 1
AND t.GROUP_CATEGORY = '1'
AND COUNT( DISTINCT tp.ID ) = 0
) THEN
'您的社群审核已通过,快加好友进来吧' ELSE ''
END AS description
FROM
FROM
(
SELECT
gp.ID,
@ -139,51 +140,39 @@ FROM
gp.GROUP_CATEGORY,
gp.STATE,
gp.PROCESSING_OPINIONS,
(
SELECT
COUNT( t.ID )
SUM( ugp.STATE = 10 ) AS totalNum,
SUM( ugp.PARTY_MEMBER = '1' ) AS partyMemberNum
FROM
epdc_user_group t
epdc_group gp
LEFT JOIN epdc_user_group ugp ON ugp.GROUP_ID = gp.ID
AND ugp.DEL_FLAG = '0'
AND ugp.STATE = 10
WHERE
t.GROUP_ID = gp.ID
AND t.DEL_FLAG = '0'
AND t.STATE = 10
) AS totalNum,
(
gp.ID IN (
SELECT
COUNT( t1.ID )
FROM
epdc_user_group t1
WHERE
t1.GROUP_ID = gp.ID
AND t1.DEL_FLAG = '0'
AND t1.STATE = 10
AND t1.PARTY_MEMBER = '1'
) AS partyMemberNum,
COUNT( DISTINCT ugpr.ID ) AS unreadTopicNum,
MAX( tp.CREATED_TIME ) AS latestTopicTime,
COUNT( DISTINCT tp.ID ) AS topicNum
gp.ID
FROM
epdc_group gp
RIGHT JOIN epdc_user_group ugp ON gp.ID = ugp.GROUP_ID
AND ugp.DEL_FLAG = '0'
AND ugp.USER_ID = #{userId}
AND ugp.STATE = 10
LEFT JOIN epdc_group_topic_user_read ugpr ON gp.ID = ugpr.GROUP_ID
AND ugpr.DEL_FLAG = '0'
AND ugpr.USER_ID = #{userId}
AND ugpr.READ_FLAG = '0'
LEFT JOIN epdc_topic tp ON gp.ID = tp.GROUP_ID
AND tp.DEL_FLAG = '0'
AND ugp.USER_ID = #{userId}
WHERE
gp.DEL_FLAG = '0'
AND gp.STATE <![CDATA[ AND gp.STATE <> ]]> 20
AND gp.GRID_ID = #{gridId}
<![CDATA[ AND gp.STATE <> ]]> 20
)
GROUP BY
gp.ID
ORDER BY
MAX( tp.CREATED_TIME ) DESC
) tmp
) t
LEFT JOIN epdc_group_topic_user_read ugpr ON t.ID = ugpr.GROUP_ID
AND ugpr.DEL_FLAG = '0'
AND ugpr.USER_ID = #{userId}
AND ugpr.READ_FLAG = '0'
LEFT JOIN epdc_topic tp ON t.ID = tp.GROUP_ID
AND tp.DEL_FLAG = '0'
GROUP BY
t.ID
ORDER BY
latestTopicTime DESC
</select>

Loading…
Cancel
Save