MySQL ケースのパフォーマンス調査がいつ行われるか

シーン:

好奇心驱使的探索,实验结果可能并不严谨

制御変数方式:同じMySQL5.7環境において、手書きグループ化連続ランキング機能を使用し、最初のグループはcase whenを使用し、2番目のグループはifを使用して14万件のデータをランク付けし、効率を確認するコードは以下のとおりです。


コード部分

ランキング機能(CASE WHENモード):

SELECT
	CASE
	WHEN @pre_name = t.name THEN
		@cur_rank := @cur_rank + 1
	ELSE
		@cur_rank := 1
	END AS rank,
	@pre_name := t.name AS studentName,
	t.create_time
FROM
	student_score t,
	(SELECT @pre_name := NULL, @cur_rank := 0) r
ORDER studentNameY t.name ASC, t.create_time DESC

ランキング関数(IF法):

SELECT
	IF(@pre_name = t.name, @cur_rank := @cur_rank + 1, @cur_rank := 1) AS rank,
	@pre_name := t.name AS studentName,
	t.create_time
FROM
	student_score t,
	(SELECT @pre_name := NULL, @cur_rank := 0) r
ORDER studentNameY t.name ASC, t.create_time DESC

クエリ速度:

When モードの場合、実行速度は 0.27s ~ 0.29s の間で安定しています。図に示すように、
ここに画像の説明を挿入
if モードでは、実行速度は 0.42 秒から 0.48 秒の間で安定しています。図に示すように:
ここに画像の説明を挿入


要約:

数据量较大情况下,CASE WHEN 的效率更高,IF效率略低一些
0.2 秒のパフォーマンスの向上はそれほど大きなものではないかもしれませんが、より多くの情報を集めるために収集する量を減らした方が、ユーザーのエクスペリエンスは向上します。

おすすめ

転載: blog.csdn.net/Fan_1504251998/article/details/127783724