云数据库 GAUSSDB-案例:改写SQL排除剪枝干扰:现象描述

时间:2024-04-26 16:14:57

现象描述

某局点测试中:ddw_f10_op_cust_asset_mon为分区表,分区键为year_mth,此字段是由年月两个值拼接而成的字符串。

测试SQL如下:

1
select      count(1) from t_ddw_f10_op_cust_asset_mon b1where b1.year_mth between to_char(add_months(to_date(''20170222'','yyyymmdd'), -11),'yyyymm') and substr(''20170222'',1 ,6 );

测试结果显示此SQL的表Scan耗时长达135s。初步猜测可能是性能瓶颈点。

add_months为本地适配函数:

1
CREATE OR REPLACE FUNCTION ADD_MONTHS(date, integer) RETURNS date    AS $$    SELECT    CASE     WHEN (EXTRACT(day FROM $1) = EXTRACT(day FROM (date_trunc('month', $1) + INTERVAL '1 month - 1 day'))) THEN        date_trunc('month', $1) + CAST($2 + 1 || ' month - 1 day' as interval)    ELSE        $1 + CAST($2 || ' month' as interval)    END    $$    LANGUAGE SQL    IMMUTABLE;
support.huaweicloud.com/distributed-devg-v3-gaussdb/gaussdb-12-0312.html