首页 > 解决方案 > MySQL是否缓存自定义函数的结果?

问题描述

我有以下自定义功能:

CREATE FUNCTION TIME_DIFFERENCE(
    ts INT
)
RETURNS VARCHAR(16)
DETERMINISTIC
BEGIN
    DECLARE result VARCHAR(16);
    SELECT (CASE WHEN UNIX_TIMESTAMP() < ts THEN CONCAT_WS(' ', (CASE WHEN days > 0 THEN CONCAT(days, 'd') END), (CASE WHEN hours > 0 THEN CONCAT(hours, 'h') END), (CASE WHEN minutes > 0 THEN CONCAT(hours, 'm') END))
        WHEN seconds BETWEEN 1 AND 59 THEN 'SOON'
        ELSE 'LIVE' END) INTO result
    FROM
    (
        SELECT
            @diff:=ts - UNIX_TIMESTAMP(),
            CAST(@days := IF(@diff / 86400 >= 1, floor(@diff / 86400), 0) AS SIGNED) as days,
            CAST(@hours := IF(@diff / 3600 >= 1, floor((@diff:=@diff-@days*86400) / 3600),0) AS SIGNED) as hours,
            CAST(@minutes := IF(@diff / 60 >= 1, floor((@diff:=@diff-@hours*3600) / 60),0) AS SIGNED) as minutes,
            CAST(@diff - @minutes * 60 AS SIGNED) as seconds
    ) AS _;
    RETURN result;
END;

当我在不同时间使用此功能时,我得到相同的结果。如何禁用缓存以计算函数值?

标签: mysql

解决方案


推荐阅读