我在 Clickhouse 中有一个大表,其中有一列名为“Route”,它是一个逗号分隔的 id 字符串。它看起来像这样:123421,25245,346263
. 一个字符串中可以有数百个 id。
查询该表以选择经过某些 id 的路线,其中订单很重要,如下所示:
SELECT * FROM MY_TABLE WHERE Route LIKE '%123421%346263%'
由于查询可能很慢,我尝试通过在 Route 列上添加数据跳过索引来加快查询速度。根据 Clickhouse 文档,tokenbf_v2 索引似乎是为我的目的而创建的,因为据我了解,它应该将我的 Route 列分解为标记,并且应该有助于加快 LIKE 查询。
但是,当我添加索引时:
alter table MY_TABLE add INDEX route_index (Route) TYPE tokenbf_v1(256, 5, 0) GRANULARITY 1;
,并确保它是通过运行创建的
OPTIMIZE TABLE MY_TABLE FINAL;
根本没有加速。
当我在 clickhouse 客户端中分析我的查询跟踪时,它始终显示:
Index `route_index` has dropped 0 granules.
显然我的bloomfilter tokenbf 索引没有效果。有人不知道为什么吗?
顺便说一句,我的 Route 列有类型String
,表的粒度MY_TABLE
是 128。