描述
动态参数类似的数据库中的PrepareStatement。用户可以在SQL中设置placeholder(?表示),同时传递placeholder对应的值。引擎内部会自动替换。
动态参数主要用于提高Cache命中率,对于查询模式固定的场景性能提升明显。
注意动态参数只能替换值,不支持关键字或字段替换。
示例
示例1
SELECT i1, cast(? as bigint) FROM t1 WHERE (i2 > 5 AND d3 < 10.1) OR s5 = ?
为了替换掉SQL中的动态参数(也就是"?"),具体如下:
dynamic_params:[[10, "str5"]]
示例2
SELECT
price,
title,
compute(
longitude,
latitude,
city_id,
CAST(? AS double),
CAST(? AS double),
CAST(1 AS bigint)
) AS distance
FROM
store,
unnest(store.sub_table)
WHERE
MATCHINDEX('shop', ?)
AND QUERY(name, ?)
dynamic_params:[[119.98844256998,
36.776817017143,
"excellect",
"水果 OR 西瓜"]]