From b091560e77f8c682cdfd563c037dac3be6bf5dea Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Sun, 14 Aug 2016 10:17:31 +0200 Subject: [PATCH] OO-2148: the buddies counter query is 20x quicker --- src/main/java/org/olat/group/manager/ContactDAO.java | 6 +++--- .../resources/database/mysql/alter_9_4_0_to_10_0_0.sql | 8 ++++---- src/main/resources/database/mysql/setupDatabase.sql | 8 ++++---- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/main/java/org/olat/group/manager/ContactDAO.java b/src/main/java/org/olat/group/manager/ContactDAO.java index 12fdfcaa572..e4f58e17e91 100644 --- a/src/main/java/org/olat/group/manager/ContactDAO.java +++ b/src/main/java/org/olat/group/manager/ContactDAO.java @@ -64,9 +64,9 @@ public class ContactDAO { sb.append("select contact.identity.key from businessgroup bgroup ") .append(" inner join bgroup.baseGroup baseGroup") .append(" inner join baseGroup.members contact") - .append(" where exists (select me.key from bgroupmember as me where me.group.key=baseGroup.key and me.identity.key=:identKey)") - .append(" and ((bgroup.ownersVisibleIntern=true and contact.role='coach')") - .append(" or (bgroup.participantsVisibleIntern=true and contact.role='participant'))"); + .append(" inner join baseGroup.members me on (me.identity.key=:identKey)") + .append(" where (bgroup.ownersVisibleIntern=true and contact.role='coach')") + .append(" or (bgroup.participantsVisibleIntern=true and contact.role='participant')"); return dbInstance.getCurrentEntityManager().createQuery(sb.toString(), Long.class) .setParameter("identKey", me.getKey()) diff --git a/src/main/resources/database/mysql/alter_9_4_0_to_10_0_0.sql b/src/main/resources/database/mysql/alter_9_4_0_to_10_0_0.sql index 215b4348b6c..fa77bf4ddbd 100644 --- a/src/main/resources/database/mysql/alter_9_4_0_to_10_0_0.sql +++ b/src/main/resources/database/mysql/alter_9_4_0_to_10_0_0.sql @@ -197,9 +197,9 @@ create view o_gp_contactkey_v as ( inner join o_bs_group_member as bg_member on (bg_member.fk_group_id = bgroup.fk_group_id) inner join o_bs_group_member as bg_me on (bg_me.fk_group_id = bgroup.fk_group_id) where - (bgroup.ownersintern=true and bg_member.g_role='coach') + (bgroup.ownersintern=1 and bg_member.g_role='coach') or - (bgroup.participantsintern=true and bg_member.g_role='participant') + (bgroup.participantsintern=1 and bg_member.g_role='participant') ); create view o_gp_contactext_v as ( @@ -221,9 +221,9 @@ create view o_gp_contactext_v as ( inner join o_userproperty as last_member on (last_member.fk_user_id = us_member.user_id and last_member.propname='lastName') inner join o_bs_group_member as bg_me on (bg_me.fk_group_id = bgroup.fk_group_id) where - (bgroup.ownersintern=true and bg_member.g_role='coach') + (bgroup.ownersintern=1 and bg_member.g_role='coach') or - (bgroup.participantsintern=true and bg_member.g_role='participant') + (bgroup.participantsintern=1 and bg_member.g_role='participant') ); create or replace view o_re_membership_v as ( diff --git a/src/main/resources/database/mysql/setupDatabase.sql b/src/main/resources/database/mysql/setupDatabase.sql index d79c5ea585a..d6d53df2cc2 100644 --- a/src/main/resources/database/mysql/setupDatabase.sql +++ b/src/main/resources/database/mysql/setupDatabase.sql @@ -1591,9 +1591,9 @@ create view o_gp_contactkey_v as ( inner join o_bs_group_member as bg_member on (bg_member.fk_group_id = bgroup.fk_group_id) inner join o_bs_group_member as bg_me on (bg_me.fk_group_id = bgroup.fk_group_id) where - (bgroup.ownersintern=true and bg_member.g_role='coach') + (bgroup.ownersintern=1 and bg_member.g_role='coach') or - (bgroup.participantsintern=true and bg_member.g_role='participant') + (bgroup.participantsintern=1 and bg_member.g_role='participant') ); create view o_gp_contactext_v as ( @@ -1615,9 +1615,9 @@ create view o_gp_contactext_v as ( inner join o_userproperty as last_member on (last_member.fk_user_id = us_member.user_id and last_member.propname='lastName') inner join o_bs_group_member as bg_me on (bg_me.fk_group_id = bgroup.fk_group_id) where - (bgroup.ownersintern=true and bg_member.g_role='coach') + (bgroup.ownersintern=1 and bg_member.g_role='coach') or - (bgroup.participantsintern=true and bg_member.g_role='participant') + (bgroup.participantsintern=1 and bg_member.g_role='participant') ); -- GitLab