动态参数

描述

动态参数类似的数据库中的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 西瓜"]]