【发布时间】:2020-05-28 04:28:29
【问题描述】:
我有一个表格查询
SELECT COUNT(*)
FROM
table1, table2, table3, table4, table5, table6
where (several conditions to join the tables)
执行需要几分钟(结果计数为 20 亿)。
问题是当我在这里添加一个 DISTINCT 时:
SELECT COUNT( DISTINCT field1, field2, field3, field4, field5 )
FROM
table1, table2, table3, table4, table5, table6
where (several conditions to join the tables)
执行时间超过 3 小时。
问题似乎出在 DISTINCT 操作上,因为两个版本的 JOIN 条件相同。有什么办法可以优化 DISTINCT 版本的执行?
谢谢!
【问题讨论】:
-
你没有使用正确的、明确的、标准
JOIN语法吗?在几乎所有这样的情况下,问题在于JOIN条件设置不正确。 -
因为它是由专有的 ETL 生成的代码...
-
无论如何,如果de JOIN条件的问题,两个版本都会出现缓慢问题。
-
优化器怎么说。发表你的解释
-
您需要更具体地了解与 DISTINCT 进行比较的列。他们来自同一张桌子,不同的桌子吗?顺便说一句,对于 20 亿行的比较来说,3 小时听起来还不错)。
标签: mysql sql database mariadb database-administration