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

select count(*)加辅助索引快

时间:2015-06-17 18:34:49      阅读:301      评论:0      收藏:0      [点我收藏+]

标签:linux

create table yw (

id int unsigned not null auto_increment,

c1 int not null default ‘0‘,

c2 int not null default ‘0‘,

primary key(id)

); 

创建一个存储过程call insert_yw往表中插入数据


插入时设置两个参数,提高插入性能

innodb_flush_log_at_trx_commit = 0

sync_binlog = 0


call insert_yw(4500000);


select count(*) from yw;

+----------+

| count(*) |

+----------+

|  4500000 |

+----------+

1 row in set (2.06 sec)


是2.06秒


加上辅助索引后


create index id_c1 on yw(c1);


>select count(*) from yw;

+----------+

| count(*) |

+----------+

|  4500000 |

+----------+

1 row in set (0.68 sec) 


为什么用 secondary index 扫描反而比 primary key 扫描来的要快呢?我们就需要了解innodb的clustered index 和 secondary index 之间的区别了。 


innodb 的 clustered index 是把 primary key 以及 row data 保存在一起的,而 secondary index 则是单独存放,然后有个指针指向 primary key。因此,需要进行 count(*) 统计表记录总数时,利用 secondary index 扫描起来,显然更快。


本文出自 “dba天空” 博客,请务必保留此出处http://9425473.blog.51cto.com/9415473/1662704

select count(*)加辅助索引快

标签:linux

原文地址:http://9425473.blog.51cto.com/9415473/1662704

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