下面是我的查询
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 秒的时间。所以让它变慢。
最佳答案
首先,您的查询似乎在您的“联合”中组合了两种截然不同的数据类型——第一部分是 ID 的计数,第二部分是文字 ID——所以我想问这是否是真的按照你写的那样做你打算做的事。然而,仅从表面上看,您可以消除第一部分中的子查询,如下所示:
SELECT COUNT(pr.prid)
FROM jcp
INNER JOIN pr
ON pr.prid = jcp.prid
WHERE jcp.custid = 123
在不知道数据上下文的情况下,我不能说这对您的性能有多大帮助,但肯定不会有什么坏处。
考虑到两个数据集的差异,如果您想将这两个不同的数据位强制放入同一列,似乎无法避免并集。如果您将它们放在不同的列中,您可能可以避免并集。
关于mysql - Union alternate 使查询更高效。 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36131309/