MySQL 优化该函数 CREATE DEFINER=ioc FUNCTION getPhonef_string varchar3000 CHARACTER SET utf8mb4 RETURNS varchar11 CHARSET utf8BEGINDECLARE isPhone INT1 DEFAULT 0;DECLARE ipos INT11 DEFAULT 0;DECLARE phone
优化建议:
-
使用正则表达式替代循环和子字符串函数,可以提高函数的执行效率。
-
减少变量的使用,可以节约内存空间并提高函数的执行效率。
-
减少SQL查询的次数,可以减少与数据库的交互次数,提高函数的执行效率。
-
删除不必要的判断语句,可以简化函数的逻辑结构,提高函数的执行效率。
改进后的代码如下:
CREATE DEFINER=ioc@% FUNCTION getPhone(f_string varchar(3000) CHARACTER SET utf8mb4) RETURNS varchar(11) CHARSET utf8
BEGIN
DECLARE phone VARCHAR(11) DEFAULT '';
SELECT SUBSTRING(f_string, REGEXP_INDEX(f_string, "[1][35678][0-9]{9}"), 11) INTO phone;
RETURN phone;
END
原文地址: https://www.cveoy.top/t/topic/fFev 著作权归作者所有。请勿转载和采集!