SQL性能
我有数据表,比如 角色定位 合同角色 我只想去拿SQL性能,sql,Sql,我有数据表,比如 角色定位 合同角色 我只想去拿 RL2 RL3 RL4 所以,我在下面写的查询运行良好,但我怀疑它是否会运行良好。。谢谢你的帮助。谢谢 SELECT RL.ROLE_LOCATION_ID FROM ROLELOCATION RL, contractrole CR WHERE CR.CONTRACT_ROLE_ID = RL.CONTRACT_ROLE_ID AND CR.CONTR_COMPONENT_ID = policy1
RL2
RL3
RL4
所以,我在下面写的查询运行良好,但我怀疑它是否会运行良好。。谢谢你的帮助。谢谢
SELECT
RL.ROLE_LOCATION_ID
FROM
ROLELOCATION RL, contractrole CR
WHERE
CR.CONTRACT_ROLE_ID = RL.CONTRACT_ROLE_ID
AND CR.CONTR_COMPONENT_ID = policy1
AND RL.LOCATION_GROUP_ID NOT IN (SELECT RL2.LOCATION_GROUP_ID
FROM ROLELOCATION RL2,CONTRACTROLE CR2
WHERE RL2.CONTRACT_ROLE_ID = CR2.CONTRACT_ROLE_ID
AND CR2.CONTR_COMPONENT_ID <> policy1)
以下是执行查询的方法:
select role_location_id
from (SELECT RL.ROLE_LOCATION_ID,
sum(case when cr.policy <> 'policy1' then 1 else 0 end) over (partition by rl.location_group_id) as NumNotPolicy1
FROM ROLELOCATION RL join
contractrole CR
on CR.CONTRACT_ROLE_ID = RL.CONTRACT_ROLE_ID
) t
where NumNotPolicy1 = 0
这统计非保单1在位置组级别出现的次数。它只选择计数为0的行。发布包含索引的模式,并发布解释的结果。如果您只是怀疑它是否运行良好。。为什么不测试一下它的性能呢20多年前,ANSI-92 SQL标准已经停止使用老式的逗号分隔表列表样式!您使用的是哪种数据库管理系统?博士后?神谕
SELECT
RL.ROLE_LOCATION_ID
FROM
ROLELOCATION RL, contractrole CR
WHERE
CR.CONTRACT_ROLE_ID = RL.CONTRACT_ROLE_ID
AND CR.CONTR_COMPONENT_ID = policy1
AND RL.LOCATION_GROUP_ID NOT IN (SELECT RL2.LOCATION_GROUP_ID
FROM ROLELOCATION RL2,CONTRACTROLE CR2
WHERE RL2.CONTRACT_ROLE_ID = CR2.CONTRACT_ROLE_ID
AND CR2.CONTR_COMPONENT_ID <> policy1)
select role_location_id
from (SELECT RL.ROLE_LOCATION_ID,
sum(case when cr.policy <> 'policy1' then 1 else 0 end) over (partition by rl.location_group_id) as NumNotPolicy1
FROM ROLELOCATION RL join
contractrole CR
on CR.CONTRACT_ROLE_ID = RL.CONTRACT_ROLE_ID
) t
where NumNotPolicy1 = 0