我们有一张桌子
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查询与数据库进行通信时,会发生顺序扫描而不是索引使用。
问题是-我可以调整索引的创建以避免使用双引号的值还是应该在应用程序方面做些什么?