我有一个查询表单
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版本的执行?
谢谢!
这需要花费几分钟的时间执行(结果计数为20亿)。
[不更改SQL语句,也不更改表的结构(例如,添加一些索引或一些新的中间摘要表),那么可能无法使查询的DISTINCT版本运行得更快。] >
就像经过时间一样,“大石头”是“使用文件排序”操作。我们使用EXPLAIN
查看查询执行计划;对于我们来说,这是迈出第一步的第一步,它掌握了MySQL正在执行的操作,执行的顺序。
您是否尝试过让带有单独辨别词的新选择陈述左加入?