我在 Doris 4.x 中对表 bc_oc_oc_order_sub_ods 的 sharding_flag 字段添加了 NGram BloomFilter 索引,配置如下:
SET enable_function_pushdown = true;
ALTER TABLE bc_oc_oc_order_sub_ods
ADD INDEX idx_sharding_flag_ngram(sharding_flag)
USING NGRAM_BF PROPERTIES("gram_size"="3", "bf_size"="1024");
ALTER TABLE bc_oc_oc_order_main_ods
ADD INDEX idx_sharding_flag_ngram(sharding_flag)
USING NGRAM_BF PROPERTIES("gram_size"="3", "bf_size"="1024");
ALTER TABLE bc_oc_oc_order_quality_ods
ADD INDEX idx_sharding_flag_ngram(sharding_flag)
USING NGRAM_BF PROPERTIES("gram_size"="3", "bf_size"="1024");
执行以下查询时,已开启 SET enable_function_pushdown = true;,且通过 SHOW ALTER TABLE COLUMN 确认 Schema Change 状态为 FINISHED:
查询SQL:
SELECT order_sub_no
FROM bc_oc_oc_order_sub_ods
WHERE sharding_flag LIKE '%POS%'
AND del_flag = 0
GROUP BY order_sub_no;
问题现象:
在 Query Profile 中找不到以下指标(既不存在,也没有值):
RowsBloomFilterFiltered
BlockConditionsFilteredBloomFilterTime
已排查项:
✅ enable_function_pushdown = true 已设置
✅ Schema Change 状态为 FINISHED
✅ LIKE 模式 '%POS%' 长度为 3,满足 gram_size = 3 的要求
✅ 索引列类型为 varchar,符合 NGram BloomFilter 仅支持字符串列的要求
想咨询:
NGram BloomFilter 索引在什么情况下 Query Profile 中才会出现相关指标?
是否有其他原因导致索引未被使用?
是否有推荐的调试方法来确认索引是否真正生效?
Doris 版本: Doris4.0.4