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:
No modo if, a velocidade de execução é estável entre 0,42s-0,48s. Como mostrado na imagem:
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.