我在mysql数据库中有这样的程序。它的工作原理很奇怪。如您所见,这个过程有两个输入参数,它们总是不同的。因此,结果也应该有所不同。但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
1条答案
按热度按时间1sbrub3j1#
为什么要为此使用动态sql?只要做:
带索引的
TABLE_1(POSITION_ID, DATE_TIME)
,这也应该有很好的表现。