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
殺しのパフォーマンス。その行にコメントを付けて「複数のmakeが見つかりました」と出力すると、非常に迅速に実行されます。これの原因は何ですか?