mysql索引的速度测试,包括字段名的影响

 12,545,379条

mysql

无索引

单列(id) 普通索引

小结论

count(1)

13.8 14.29  14.22

 7.38s 7.22s 7.5s

7.38 7.29

有索引 count(1) 速度快一半

count(1)=count(*)

count(*)

13.9 13.7

7.4 7.6 7.3 7.23

7.5(count(id后))

还是用count(1)吧,不用count(索引列)(慢)

count(id)

14.46 14.85 14.85

7.8   8.2   8.16  8.0

7.88  8.33

 

 

COUNT(字段) 短一点,速度快一点,但是有限

count(title)

 

VARCHAR(100)

15.0 15.0 15.28

14.65  15.9  14.9

count(status)

TINYINT(4)

14.6  14.5 14.4

14.4 14.76  15.23

14.39

 

 

 

 

获取 id

 

where条件是

max(id)的值

 

14 14.75 14.66 14.4

14.9 14.0 13.9

0.001 0.001  0.002

 

无索引,where条件是全表扫面 max(id)与min(id)等效率

 

有索引是顶点定位,微妙级

获取 id

 

where条件是

max(id)的值

 

14 14.75 14.66 14.4

14.9 14.0 13.9

0.001  0.002

获取 全列

 

where条件是

 id

 

17.69  17.62 17.55

17.75 17.98  17.4

17.4  17.4 17.74

0.001  0.002

 select 列 越少,速度越快

全列与 * 效率差不多

select *

where条件是

 id

 

 17.73  18.14   17.79

 18.26  17.47 17.50

17.54   17.4  17.58

17.74  17.92

0.001  0.002

 

 

结论

无索引,where查询 全表扫面 秒级

索引 where 索引 直接定位,不全表查,微秒级

 

 

count(1) ≈count(*) 稍>count(索引列) ≈1/2 count(无索引列)

count(1)索引 ≈ 1/2  count(1)无索引

count(列)列长度越长,时间会稍微长一点

 

select 列 越少,速度越快;全列与 * 效率差不多

 

附注

RESET QUERY CACHE;  --清除缓存

 

 

其他

 

中英

 

貌似全是英文的字段  like 时间更久 ,比全是中文的要慢

 

 SELECT * FROM `tb_item1` where image like '%beac%'; --21.092  21.475 varchar(500)

RESET QUERY CACHE; 

SELECT * FROM `tb_item1` where sell_point like '%品质可靠%'; --17.006 16.953 varchar(500)

like

 

like 的中文字 长短 影响不是很大

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值