mariadb在有无索引下插入和查询速度对比

众所周知,mariadb是mysql的一个分支,使用起来和mysql差别不大。我最近看了看《高性能MySQL》,虽然明白了一些索引的原理,但对于索引实际能提升的效率还是缺乏直观的认识,所以想要测试一下索引对插入和查询的时间的影响。之所以使用mariadb而不是mysql,一是因为两者相差不大,二是yum库中没有mysql。

测试环境:

虚拟机系统:centos,cpu:1核,内存:2g,mariadb版本:

数据采集方式:

1.插入随机数据到某个量级

2.执行查询语句,相同语句执行100次,获取执行100次所需时间

3.然后插入100条数据,获取所用时间

一共测试千,万,十万,百万这四个量级

 

表情况:

innob引擎

表结构

no

name

male

age

address

 

序号(自增)

varchar(20)

'f','m'

int

 

数据随机策略:

no:自增

name: 5-9个a-z字母

male:随机

age:0-100随机

address:20个城市+随机字符串(0-10,a-z)

表1:无索引表

表2:有索引表 索引1(name),索引2(年龄,address)

表3:单索引表 索引1 hash(name),索引2(年龄),索引3(address),索引4(male)

查询语句:

1.select * from $table where name= 中间值
2.select * from $table where name like  中间值前三个字母
3.select name from $table where name like 中间值前三个字母
4.select name from $table where name like 中间值前三个字母 order by name
5.select * from $table where age = 51 limit 100
6.select * from $table where age > 47 and age < 52 limit 100
7.select * from $table where age > 47 and age < 52 and address  like 'beijing%' limit 100
8.select * from $table where age > 47 and age < 52 and address=中间值 limit 100
9.select * from $table where address  like  'beijing%' and  age > 47 and age < 52  limit 100
10.select * from $table where age =52 and address  like  'beijing%' limit 100
11.select * from $table where address like 'beijing%'  limit 100
12.select * from $table where male = 'f' and age > 47 and age < 52 limit 100

中间值:当前量级插入量级一半的时候的数据,例如1万量级时,第5000条数据的值

 

结果:

内容太多,只挑一些说明。如果感兴趣,详细结果访问https://github.com/pyromancer-shadow/Mysqltest,代码也在这里

1.插入效率看不出多少差别,我本以为会差很多,而且大家都说索引会降低插入速度。

   不过在十万和百万级的时候有有数据异常,不明白为什么,只知道与索引无关。因为十万级无索引的反而很慢。

 

2.查询速度在1千级已经有差距了,没有索引的比用了索引的时间长3倍

   在百万级选择性比较高的索引和查询(比如说查询1)相差近千倍,查询2、3、4差百倍。

   选择性较小的(查询4、5)在千、万、十万级索引有效,但百万级差别比较小

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值