怎么给字符串加索引

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

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

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

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值