在YugabyteDB中创建索引遇fillfactor参数未识别错误如何解决?
解决YugabyteDB创建唯一索引的报错问题
问题原因
YugabyteDB虽兼容PostgreSQL的SQL语法,但底层默认采用LSM树作为索引存储引擎,而非PostgreSQL原生的BTREE。当你指定USING BTREE时,系统会自动替换为LSM引擎(即你看到的NOTICE提示)。而fillfactor是PostgreSQL中BTREE索引特有的参数,用于控制索引页的填充率,LSM索引并不支持该参数,因此触发报错。
解决方法
直接移除WITH (FILLFACTOR=95)参数即可,也可选择显式指定USING LSM(不指定的话系统也会自动替换,显式书写更直观)。
正确的索引创建语句
方式1:显式指定LSM引擎
CREATE UNIQUE INDEX ix_demo ON public.demo USING LSM(c2 ASC, c3 ASC);
方式2:省略引擎类型(系统自动替换为LSM)
CREATE UNIQUE INDEX ix_demo ON public.demo (c2 ASC, c3 ASC);
补充说明
YugabyteDB的LSM索引设计不需要fillfactor这类参数,因为LSM树通过分层合并的机制管理数据,不存在BTREE那种单页填充率的概念,因此无需设置该参数。
内容的提问来源于stack exchange,提问作者dh YB
相关产品推荐
相关产品推荐

