码迷,mamicode.com
首页 > 其他好文 > 详细

减少查询的次数,对应在主键索引上只搜索一次第一

时间:2020-07-06 12:30:41      阅读:56      评论:0      收藏:0      [点我收藏+]

标签:user   设置   次数   zhang   rom   效率   增加   读取   平衡   

假设在 user 表中存在zhangsp1234@gmail.comzhangs1pzxyz@qq.com , zhangssxyz@xxx.com, 三条记录。

有这样一条语句 select id,name,email from SUser where email=‘zhangssxyz@xxx.com‘;

使用 index1 索引时,流程如下:

  1. 在 index1 中,找到名字是 zhangssxyz@xxx.com 的记录,获取 ID.
  2. 在主键索引上对应 ID的行,判断 email 是否正确,将记录加入结果集。
  3. 接着取 index1 索引的下一条记录,发现不满足 email 格式,结束循环。

使用 index2 索引:

  1. 在 index2 中,找到名字是 zhangs 的记录,获取 ID.
  2. 在主键索引上对应 ID的行,这时拿到的是 zhangss1234@gmail.com 的行, 发现不符合,丢弃。
  3. 接着在 index2 循环,拿到下一条记录 ID。
  4. 在主键索引上对应 ID的行,这时拿到的是 zhangsspzxyz@qq.com 的行, 发现不符合,丢弃。
  5. 接着在 index2 循环,拿到下一条记录 ID。
  6. 在主键索引上对应 ID的行,这时拿到的是 zhangssxyz@xxx.com 的行, 发现符合,纳入结果集。
  7. 接着在 index2 循环,发现记录格式不符合,结束循环。

看这个过程,很容易发现,前缀索引会增加查询语句读取数据的次数。

但如果将前缀索引的 email(6) 改成 email(7),就会减少查询的次数,对应在主键索引上只搜索一次。这就说明,如果能合适的设置前缀索引的长度,就能在空间和效率上取得平衡。

减少查询的次数,对应在主键索引上只搜索一次第一

标签:user   设置   次数   zhang   rom   效率   增加   读取   平衡   

原文地址:https://www.cnblogs.com/mmaskjow/p/13254043.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!