MySQL中的group_concat性能问题

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。在group_concat杀死性能。如果我注释该行并仅输出“ multiple make

found”,它将很快执行。知道是什么原因造成的吗?

回答:

在此查询的原始非简化版本中,我们有个DISTINCT,它是完全不必要的,并导致group_concat出现性能问题。我不知道为什么会引起这样的问题,但是删除它可以解决性能问题。

以上是 MySQL中的group_concat性能问题 的全部内容, 来源链接: utcz.com/qa/431608.html

回到顶部