MySQL索引使用场景

场景一: 通过身份证来查找用户信息的场景

1 使用拉链式解决

  • 阻塞点: 如果在身份证建立索引,由于身份证长度过长,占空间不建议
  • 使用hash链表解决
    • 每次保存身份证的时候,对身份证进行hash,算出hash值
    • hash值 + 身份证 + userId (冗余字段)保存到中间表中
    • 每次查询的时候,先获取到hash值,通过索引获取少量数据,在遍历身份证拿到正确的数据的userId
      MySQL索引使用场景
  • 适用于单一查询
  • 如果要范围查询,需要把范围里面的数据全量扫描

2 使用有序的数组解决

MySQL索引使用场景

  • 根据身份证进行有序排序,从小到大
  • 解决了范围查找的问题
  • 但是如果要新增的话,改动量大,需要把后面的数据都要后移