我被告知Teradata中查询的绑定变量可以改善其性能,因为查询总是相同的,因此Teradata不会重新准备或重新解析SQL语句,而是宁愿重用存储的执行计划以纪念会议。
示例,我有以下宏:
REPLACE MACRO DB.MACRO(USER_ACCOUNT_ID# VARCHAR(100))
AS (
SELECT USER_ACCOUNT_ID
,USER_ACCOUNT_TYPE_DESCRIPTION
,CAST(TD_DATE_KEY_TO_DATE(DATE_KEY) AS VARCHAR(10)) AS "DATE"
,CLUSTER_DESC AS CLUSTER_DESCRIPTION
FROM DB.VIEW
WHERE USER_ACCOUNT_ID = :USER_ACCOUNT_ID#;
);
我执行的操作如下:EXECUTE DB.MACRO('123');
使用查询绑定时,语句会这样EXECUTE DB.MACRO(?);
以某种方式提供USER_ACCOUNT_ID
的实际值。
如何对这样的语句进行查询绑定,以避免查询预分配和解析时间?