下面是我的问题
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有没有办法让它更有效率呢?这个查询是在某个函数中执行的,执行时间长达数千秒。所以让它变慢。
发布于 2016-03-21 22:32:03
首先,您的查询似乎在您的“联合”中组合了两种非常不同的数据类型-第一部分是ID的计数,第二部分是文字ID -所以我会质疑这是否真的像您编写的那样做。但是,仅从表面上看,您可以消除第一部分中的子查询,如下所示:
SELECT COUNT(pr.prid)
FROM jcp
INNER JOIN pr
ON pr.prid = jcp.prid
WHERE jcp.custid = 123 如果不知道数据的上下文,我不能说这会对您的性能有多大帮助,但这肯定不会有什么坏处。
考虑到两个数据集中的差异,如果您想要将这两个不同的数据位强制放入同一列中,似乎不可能避免联合。如果您将它们放在不同的列中,您可能会避免使用联合。
https://stackoverflow.com/questions/36131309
复制相似问题