Exploração de desempenho do caso MySQL quando e se

Cenas:

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

Método de variável de controle: No mesmo ambiente MySQL5.7, a função de classificação contínua de agrupamento manuscrito, o primeiro grupo usa caso quando e o segundo grupo usa se para classificar 140.000 dados e verificar a eficiência. O código é o seguinte.


parte do código

Função de classificação (modo 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

Função de classificação (método 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

Velocidade da consulta:

No modo quando, a velocidade de execução é estável entre 0,27s-0,29s. Conforme mostrado na figura:
insira a descrição da imagem aqui
No modo if, a velocidade de execução é estável entre 0,42s-0,48s. Como mostrado na imagem:
insira a descrição da imagem aqui


Resumir:

数据量较大情况下,CASE WHEN 的效率更高,IF效率略低一些.
A melhoria de desempenho de 0,2s pode não ser muito grande, mas pode dar aos usuários uma experiência melhor se você coletar menos para fazer mais.

Acho que você gosta

Origin blog.csdn.net/Fan_1504251998/article/details/127783724
Recomendado
Clasificación