MySQL优化:DISTINCT太慢

问题描述 投票:1回答:2

我有一个查询表单

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版本的执行?

谢谢!

mysql sql database mariadb database-administration
2个回答
0
投票

这需要花费几分钟的时间执行(结果计数为20亿)。


0
投票

[不更改SQL语句,也不更改表的结构(例如,添加一些索引或一些新的中间摘要表),那么可能无法使查询的DISTINCT版本运行得更快。] >

就像经过时间一样,“大石头”是“使用文件排序”操作。我们使用EXPLAIN查看查询执行计划;对于我们来说,这是迈出第一步的第一步,它掌握了MySQL正在执行的操作,执行的顺序。


0
投票

您是否尝试过让带有单独辨别词的新选择陈述左加入?

© www.soinside.com 2019 - 2024. All rights reserved.