From: Simon Brandhof Date: Fri, 17 Mar 2017 12:23:23 +0000 (+0100) Subject: Replace SQL "IN SELECT" by "EXISTS" X-Git-Tag: 6.4-RC1~742 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=0d946c2ccc939f3b14352cc3da551af917a045c0;p=sonarqube.git Replace SQL "IN SELECT" by "EXISTS" This is a good practice to improve performances on some databases. --- diff --git a/server/sonar-db-dao/src/main/resources/org/sonar/db/permission/AuthorizationMapper.xml b/server/sonar-db-dao/src/main/resources/org/sonar/db/permission/AuthorizationMapper.xml index 17dc2b5eac2..dd5fc1ff306 100644 --- a/server/sonar-db-dao/src/main/resources/org/sonar/db/permission/AuthorizationMapper.xml +++ b/server/sonar-db-dao/src/main/resources/org/sonar/db/permission/AuthorizationMapper.xml @@ -194,7 +194,7 @@ FROM group_roles gr WHERE gr.role=#{role,jdbcType=VARCHAR} - and (gr.group_id is null or gr.group_id in (select gu.group_id from groups_users gu where gu.user_id=#{userId})) + and (gr.group_id is null or exists (select 1 from groups_users gu where gu.user_id = #{userId, jdbcType=INTEGER} and gr.group_id = gu.group_id)) and gr.resource_id=#{element,jdbcType=BIGINT} @@ -231,8 +231,7 @@ INNER JOIN projects p on p.id = gr.resource_id AND p.module_uuid IS NULL where gr.role=#{role,jdbcType=VARCHAR} - and (gr.group_id is null or gr.group_id in (select gu.group_id from groups_users gu where - gu.user_id=#{userId,jdbcType=INTEGER})) + and (gr.group_id is null or exists (select 1 from groups_users gu where gu.user_id = #{userId,jdbcType=INTEGER} and gu.group_id = gr.group_id)) UNION SELECT p.uuid as root_project_uuid FROM user_roles ur diff --git a/server/sonar-db-dao/src/main/resources/org/sonar/db/qualitygate/QualityGateConditionMapper.xml b/server/sonar-db-dao/src/main/resources/org/sonar/db/qualitygate/QualityGateConditionMapper.xml index 0923db5ae60..1d305087cf8 100644 --- a/server/sonar-db-dao/src/main/resources/org/sonar/db/qualitygate/QualityGateConditionMapper.xml +++ b/server/sonar-db-dao/src/main/resources/org/sonar/db/qualitygate/QualityGateConditionMapper.xml @@ -46,7 +46,7 @@ delete from quality_gate_conditions - where metric_id not in (select id from metrics where enabled=${_true}) + where not exists (select 1 from metrics m where m.enabled=${_true} and m.id = metric_id)