首页 > 其他 > 详细

select count(*)加辅助索引快

时间:2015-06-17 18:31:56      阅读:272      评论:0      收藏:0      [点我收藏+]

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(*)加辅助索引快

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!