关于pgsql的索引创建

文章讲述了在SQL中为`public.sy_cfg_rule`表的`camera_ip`列创建的两个BTree索引,一个用于精确匹配,一个用于模式匹配,强调根据查询需求选择合适索引以提升查询性能。
摘要由CSDN通过智能技术生成

首先附上一段SQL代码

CREATE INDEX sy_cfg_rule_index_cameraip 
ON public.sy_cfg_rule 
USING btree (camera_ip COLLATE pg_catalog.DEFAULT pg_catalog.varchar_ops ASC NULLS LAST); 

CREATE INDEX sy_cfg_rule_index_cameraip_like
ON public.sy_cfg_rule 
USING btree (camera_ip COLLATE pg_catalog.DEFAULT pg_catalog.varchar_pattern_ops ASC NULLS LAST); 

第一个索引是针对 public.sy_cfg_rule 表中的 camera_ip 列创建的。它使用 btree 索引类型,使用默认的排序规则 pg_catalog.DEFAULT 和操作符类 pg_catalog.varchar_ops,按照升序排序,并将空值放在最后。

第二个索引也是针对 public.sy_cfg_rule 表中的 camera_ip 列创建的。它同样使用 btree 索引类型,但使用了用于模式匹配的操作符类 pg_catalog.varchar_pattern_ops,按照升序排序,并将空值放在最后。

这两个索引的区别在于对 camera_ip 列的处理方式不同,一个是基于一般的字符串排序,另一个是针对模式匹配的排序。

最主要的区别就是

这两个索引的主要区别在于它们使用的操作符类不同:

  1. 第一个索引 sy_cfg_rule_index_cameraip 使用了 pg_catalog.varchar_ops 操作符类,适合用于一般的字符串比较和排序。这种索引适合用于精确匹配查询,例如 WHERE camera_ip = 'xxx.xxx.xxx.xxx'

  2. 第二个索引 sy_cfg_rule_index_cameraip_like 使用了 pg_catalog.varchar_pattern_ops 操作符类,适合用于模式匹配的查询,例如 WHERE camera_ip LIKE 'xxx%'。这种索引对于模糊匹配或通配符查询更有效。

因此,根据实际查询需求,选择合适的索引可以提高查询性能。如果查询中经常使用模糊匹配或通配符查询,那么使用第二个索引可能更有效率。

所以自己要结合实际情况来进行索引的创建,在海量数据源的情况下,结合实际生存情况,一般是两种索引都要创建。

  • 11
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值