gpt4 book ai didi

mysql - 优化 MySQL 查询,避免不必要的用户自定义函数调用

转载 作者:行者123 更新时间:2023-11-29 02:37:46 26 4
gpt4 key购买 nike

我有一个查询,它在 SELECT 语句中多次调用用户定义的函数。函数 (vfget) 从字符串中包含的键=值对返回值。

查询是否可以只调用一次函数并将其存储在变量中,以便可以在同一查询中重复使用?

目前我的查询是:

SELECT 
CASE WHEN(right(vfget(appmod_params, 'service'), 3) = '_dd' OR right(vfget(appmod_params, 'service'), 3) = '_wp')
THEN left(vfget(appmod_params, 'service'), length(vfget(appmod_params, 'service'))-3)
ELSE vfget(appmod_params, 'service')
END
FROM ota1003
LIMIT 10

最佳答案

SELECT  @vf := vfget(appmod_params, 'service'),
case when right(@vf, 3) IN ('_dd', '_wp')
then left(@vf, length(@vf) - 3)
else @vf
end
from ota1003
limit 10

或者这个:

SELECT  case when right(vf, 3) IN ('_dd', '_wp')
then left(vf, length(vf) - 3)
else vf
end
FROM (
SELECT vfget(appmod_params, 'service') AS vf
FROM ota1003
LIMIT 10
) q

MySQL 中的嵌套查询是缓冲的,因此效率较低,尽管只有 10 条记录,这应该不是什么大问题。

关于mysql - 优化 MySQL 查询,避免不必要的用户自定义函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2464176/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com