PostgreSQL为双引号字符串而不是“原始”字符串创建索引

时间:2018-07-08 21:20:09

标签: sql postgresql indexing

我们有一张桌子

CREATE TABLE public.goods
(
  ...
  namespace character varying NOT NULL,
  ...
}

创建索引后的方式:

CREATE INDEX goods_namespace_idx
  ON public.goods
  USING btree
  (namespace COLLATE pg_catalog."default");

它是为双引号值创建的,因此结果索引无法按预期工作:

explain analyze select * from goods where namespace='LoadTest';
-- takes 58ms, see Seq Scan in plan

explain analyze select * from goods where namespace='"LoadTest"';
-- takes 0.047ms, Index Only Scan

结果会影响性能,因为在通过Hibernate通过JPQL查询与数据库进行通信时,会发生顺序扫描而不是索引使用。

问题是-我可以调整索引的创建以避免使用双引号的值还是应该在应用程序方面做些什么?

0 个答案:

没有答案