找回密码
 立即注册
首页 业界区 安全 怎么给字符串加索引

怎么给字符串加索引

茅断卉 2025-6-1 21:03:37
加索引的原则:
  1. 区分度越高越好,区分度高,意味着重复的值少
复制代码
使用前缀索引,定义好长度,就可以做到既节省空间,又不用额外增加太多的查询成本。

email的例子
  1. zhangsan@qq.com
  2. zhangsi@qq.com
  3. zhangwu@qq.com
  4. 索引1 :email
  5. 索引2: email(7)
  6. 根据情况使用索引2,因为索引长度越长,占用磁盘空间越大
复制代码
身份证例子
  1. 由于身份证前几位都是一样的,重复值高,需要怎么来建立索引?
  2. 1.倒序存储  reverse('input_id_card_string')
  3. 2.hash字段
  4. 倒序存储和使用hash字段这两种方法的异同点:
  5. 1.都不支持范围查询,只支持等值查询
  6. 2.在CPU消耗方面,倒序方式每次写和读的时候,都需要额外调用一次reverse函数,而hash字段的方式需要额外调用一次crc32()函数。如果只从这两个函数的计算复杂度来看的话,reverse函数额外消耗的CPU资源会更小些
  7. 3.从查询效率上看,使用hash字段方式的查询性能相对更稳定一些。因为crc32算出来的值虽然有冲突的概率,但是概率非常小,可以认为每次查询的平均扫描行数接近1。而倒序存储方式毕竟还是用的前缀索引的方式,也就是说还是会增加扫描行数。     
复制代码
小结:
  1. 1.直接创建索引,这样可能比较占用空间
  2. 2.创建前缀索引,节约空间,但会增加查询的次数,并且不能使用到覆盖索引
  3. 3.倒序储存,在创建前缀索引,可以绕过字符串前缀区分度不够的问题
  4. 4.hash索引,查询性能稳定,有额外的存储和计算性能
复制代码
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册