Exploración de rendimiento del caso de MySQL cuando y si

Escenas:

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

Método de variable de control: en el mismo entorno MySQL5.7, la función de clasificación continua de agrupación manuscrita, el primer grupo usa case when, y el segundo grupo usa if para clasificar 140,000 datos y verificar la eficiencia. El código es el siguiente.


parte del código

Función de clasificación (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

Función de clasificación (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

Velocidad de consulta:

En el modo case when, la velocidad de ejecución es estable entre 0,27s y 0,29s. Como se muestra en la figura:
inserte la descripción de la imagen aquí
En el modo if, la velocidad de ejecución es estable entre 0.42s-0.48s. Como se muestra en la imagen:
inserte la descripción de la imagen aquí


Resumir:

数据量较大情况下,CASE WHEN 的效率更高,IF效率略低一些.
La mejora del rendimiento de 0,2 s puede no ser muy grande, pero puede brindar a los usuarios una mejor experiencia si recopila menos y más.

Supongo que te gusta

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