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 的中文字 长短 影响不是很大

 

 

 

 

你可能感兴趣的:(mysql)