MySQL索引使用场景
分类:
文章
•
2022-10-17 23:59:20
场景一: 通过身份证来查找用户信息的场景
1 使用拉链式解决
- 阻塞点: 如果在身份证建立索引,由于身份证长度过长,占空间不建议
- 使用hash链表解决
- 每次保存身份证的时候,对身份证进行hash,算出hash值
- hash值 + 身份证 + userId (冗余字段)保存到中间表中
- 每次查询的时候,先获取到hash值,通过索引获取少量数据,在遍历身份证拿到正确的数据的userId
- 适用于单一查询
- 如果要范围查询,需要把范围里面的数据全量扫描
2 使用有序的数组解决
![MySQL索引使用场景 MySQL索引使用场景](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzg2MC83YTUzNDU3OTJjODUyYTA4ZWM3YWZmNGRhN2JiZGE3NC5wbmc=)
- 根据身份证进行有序排序,从小到大
- 解决了范围查找的问题
- 但是如果要新增的话,改动量大,需要把后面的数据都要后移