我添加了一个group_concat
到一个查询并杀死了性能。添加之前和之后的解释计划是相同的,所以我对如何优化它感到困惑。
这是查询的简化版本:
SELECT @curRow := @curRow + 1 AS row_number,
docID,
docTypeID,
CASE WHEN COUNT(1) > 1
THEN group_concat( makeID )
-- THEN 'multiple makes found'
ELSE MIN(makeID)
END AS makeID,
MIN(desc) AS desc
FROM simplified_mysql_table,
(SELECT @curRow := 0) r
GROUP BY docID, docTypeID,
CASE WHEN docTypeID = 1
THEN 0
ELSE row_number
END;
请注意CASE
中的声明SELECT
. The group_concat
破坏性能。如果我评论该行并仅输出“找到多个版本”,它会执行得非常快。知道是什么原因造成的吗?
在此查询的原始非简化版本中,我们有一个DISTINCT
,这是完全没有必要的,并且会导致 group_concat 的性能问题。我不确定为什么它会导致这样的问题,但删除它可以解决性能问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)