mysql - Union alternate 使查询更高效。 mysql

标签 mysql sql mysql-workbench

下面是我的查询

    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/

相关文章:

php - 对 watch 。健康)状况

MySQL:为大约100,000行的InnoDB表中的列建立索引需要时间?

mysql - 我无法从 nodejs 连接到 mysql。我收到以下错误

sql - Coldfusion Excel 导出

sql - "Lost"SQL服务器数据库

mysql - Google Cloud SQL 连接/权限失败

mysql - 获取每个日期的最高值

MySQL断言

MySQL 语句显示值,即使是 NULL

php - 传递给 ORDER BY 的变量?