gpt4 book ai didi

MySQL 缓存结果?

转载 作者:行者123 更新时间:2023-11-29 16:49:14 25 4
gpt4 key购买 nike

我在MySQL数据库中有这样的程序。它的工作原理很奇怪。正如您所看到的,程序有 2 个输入参数,它们可以始终不同。因此,结果也应该不同。但MySQL似乎缓存了变量或者其他东西。当我使用不同的输入值运行程序时,我总是看到相同的数据。是否可以仅对当前过程启用缓存?我真的很困惑,需要建议。

PROCEDURE MY_PROCEDURE(
IN START_DATE VARCHAR(19),
IN END_DATE VARCHAR(19)
)
BEGIN
SET GLOBAL group_concat_max_len=18446744073709551615;

SET @START_DATE := START_DATE ;
SET @END_DATE:= END_DATE;

SET @IDS_TABLE_1 = (
SELECT GROUP_CONCAT(POSITION_ID)
FROM TABLE_1
WHERE
DATE_TIME BETWEEN @START_DATE AND @END_DATE
);

SET @SELECT = CONCAT("
SELECT *
FROM TABLE_2
WHERE
C.ID_OBJECT NOT IN (@IDS_TABLE_1)
")

PREPARE FINAL_SELECT FROM @SELECT;
EXECUTE FINAL_SELECT;
DEALLOCATE PREPARE FINAL_SELECT;
END

最佳答案

为什么要使用动态 SQL 来实现此目的?只要这样做:

SELECT t2.*
FROM TABLE_2 t2
WHERE NOT EXISTS (SELECT 1
FROM TABLE_1 t1
WHERE t1.DATE_TIME BETWEEN @START_DATE AND @END_DATE AND
t2.ID_OBJECT = t1.POSITION_ID
);

TABLE_1(POSITION_ID, DATE_TIME) 上建立索引,这也应该具有良好的性能。

关于MySQL 缓存结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52907288/

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