MySQL SQL查询时间评估

提前说明:1.TR 表示随机I/O查找(假设为10ms)2.TS 表示顺序I/O查找(0.01ms)3.TR查询的速度远远小于TS4.一次的查询,最少一次随机I/O5.通过索引查询,如果无法满足覆盖索引条件,需要进行一次回表查询(随机I/O)6.以下都不考虑有缓存的情况7.下面的仅供参考,如有问题,欢迎留言指出。设计索引时,一次查询需要考虑的问题:1.最好输...
摘要由CSDN通过智能技术生成

提前说明:

1.TR  表示随机I/O查找(假设为10ms)

2.TS  表示顺序I/O查找(0.01ms)

3.TR查询的速度远远小于TS

4.一次的查询,最少一次随机I/O

5.通过索引查询,如果无法满足覆盖索引条件,需要进行一次回表查询(随机I/O)

6.以下都不考虑有缓存的情况

7.下面的仅供参考,如有问题,欢迎留言指出。

设计索引时,一次查询需要考虑的问题:

1.最好输入,即执行查询限定条件,比如limit 20, 索引前20条即可满足查询条件

2.最坏输入,索引无法满足查询条件或者需要扫描整个索引

栗子:

1.非聚簇索引且非覆盖索引

SQL1:SELCT A,B,C,D,F,G FROM TEST WHERE A = A1 AND B=B1 LIMIT 20
索引(A,B) 非聚簇索引
数据量100W, A的过滤因子 1% ,B的过滤因子10%   (A,B)共过滤至1000条数据,其中每10条有一个符合B条件的数据。

最坏输入(符合条件的只有19条)
   索引(A,B)  TR=1     TS =  1000
   回表:TR=19  TS = 0
   拉取数据成本:19*0.1ms
   总成本:TR(20*10ms) + TS(1000*0.01ms) + 拉取成本(19*0.1ms) = 211ms

最好输入(直接能找到20条数据)
   索引(A,B) TR=1   TS=20
 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值