优化建议 :如果 IF 或 CASE 语句包含带有冗余比较的复合表达式,考虑嵌套多个 IF 或 CASE 语句以避免冗余处理。
性能对比 :通常认为 CASE 语句在将变量与一组固定值进行比较时可能更优,但实际测试发现,IF 语句比等效的 CASE 语句大约快 15%。推测这是由于 MySQL 代码中 IF 语句的内部算法更高效。示例如下:
-- CASE 语句示例
CASE customer_code
WHEN 1 THEN
SET process_flag=7;
WHEN 2 THEN
SET process_flag=9;
WHEN 3 THEN
SET process_flag=2;
ELSE
SET process_flag=0;
END CASE;
-- 等效的 IF 语句示例
IF customer_code = 1 THEN
SET process_flag=7;
ELSEIF customer_code = 2 THEN
SET process_flag=9;
ELSEIF customer_code = 3 THEN
SET process_flag=2;