首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Union alternate,使查询更高效。Mysql

Union alternate,使查询更高效。Mysql
EN

Stack Overflow用户
提问于 2016-03-21 20:40:54
回答 1查看 39关注 0票数 2

下面是我的问题

代码语言:javascript
复制
    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

有没有办法让它更有效率呢?这个查询是在某个函数中执行的,执行时间长达数千秒。所以让它变慢。

EN

回答 1

Stack Overflow用户

发布于 2016-03-21 22:32:03

首先,您的查询似乎在您的“联合”中组合了两种非常不同的数据类型-第一部分是ID的计数,第二部分是文字ID -所以我会质疑这是否真的像您编写的那样做。但是,仅从表面上看,您可以消除第一部分中的子查询,如下所示:

代码语言:javascript
复制
SELECT COUNT(pr.prid)
FROM jcp
    INNER JOIN pr 
    ON pr.prid = jcp.prid
WHERE jcp.custid = 123 

如果不知道数据的上下文,我不能说这会对您的性能有多大帮助,但这肯定不会有什么坏处。

考虑到两个数据集中的差异,如果您想要将这两个不同的数据位强制放入同一列中,似乎不可能避免联合。如果您将它们放在不同的列中,您可能会避免使用联合。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36131309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档