怎么给字符串加索引

本文探讨了四种数据库索引策略:直接索引、前缀索引、倒序存储加前缀索引以及哈希字段索引。每种策略在空间占用、CPU消耗和查询效率上各有优劣。直接索引占用空间大;前缀索引节省空间但增加扫描次数;倒序存储用于提高区分度,不支持范围查询;哈希字段索引提供稳定查询性能,但不支持范围扫描。选择哪种策略需根据实际需求权衡。

1.直接创建完整索引,这样可能比较占用空间;

2.创建前缀索引,节省空间,但会增加查询扫描次数,并且不能使用覆盖索引(即使一个字符串的长度小于前缀索引长度,也需要进行回表判断);

3.倒序存储,再创建前缀索引,用于绕过字符串本身前缀的区分度不够的问题,不支持范围查找;

4.创建 hash 字段索引,查询性能稳定,有额外的存储和计算消耗,不支持范围扫描。

倒序索引和hash字段索引的区别

1.从占用的额外空间来看,倒序存储方式不会消耗额外的存储空间,而 hash 字段方法需要增加一个字段。当然,倒序存储方式使用 4 个字节的前缀长度应该是不够的,如果再长一点,这个消耗跟额外这个 hash 字段也差不多抵消了。
  
2.在 CPU 消耗方面,倒序方式每次写和读的时候,都需要额外调用一次 reverse 函数,而 hash 字段的方式需要额外调用一次 crc32() 函数。如果只从这两个函数的计算复杂度来看的话,reverse 函数额外消耗的 CPU 资源会更小些。
  
3.从查询效率上看,使用 hash 字段方式的查询性能相对更稳定一些。因为 crc32 算出来的值虽然有冲突的概率,但是概率非常小,可以认为每次查询的平均扫描行数接近 1。而倒序存储方式毕竟还是用的前缀索引的方式,也就是说还是会增加扫描行数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值