以下是我的查询
Select
count(t.prid)
from
(select
pr.prid
from
jcp
inner join pr ON pr.prid = jcp.prid
where
jcp.custid = 123 union select
pr.prid
from
jcl
inner join pr ON pr.prid = jcl.prid
where
jcl.custid = 123) as t
有什么方法可以提高效率吗?此查询位于某个函数内并执行1000次。所以慢慢来。
答案 0 :(得分:0)
首先,您的查询似乎是在“联合”中组合两种非常不同类型的数据 - 第一部分是ID的计数,第二部分是文字ID - 所以我会质疑这是否是真正做你打算做的事情。但是,只需将其视为面值,就可以消除第一部分中的子查询,如下所示:
SELECT COUNT(pr.prid)
FROM jcp
INNER JOIN pr
ON pr.prid = jcp.prid
WHERE jcp.custid = 123
我不知道在不了解您的数据背景的情况下有多大帮助您的表现,但它肯定不会受到伤害。
鉴于两个数据集的不同,如果要将这两个不同的数据位强制转换为同一列,则似乎无法避免联合。如果你把它们放在不同的列中,你可能会避免联合。