首页 > 其他 > 详细

英语发音学习

时间:2014-01-24 03:32:41      阅读:344      评论:0      收藏:0      [点我收藏+]

第三章

1、分区表与普通表(加索引)对比

2、分区表(加非聚集索引)与普通表(加索引)对比


--------------------------------华丽的分割线---------------------------------


1、分区表与普通表(加索引)对比

接第二章最后的补充例子,测试数据为10000条。表a依然是我们分了3个区的分区表,我们把普通表b的id字段设置成主键(同时设置了聚集索引),如图1所示:

bubuko.com,布布扣


然后我们进行表a(分区表)和表b(添加索引表)的对比,代码如下:

set statistics io on
select * from a  where id=9999
select * from b  where id=9999
set statistics io off

/*
(1 行受影响)
表 ‘a‘。扫描计数 1,逻辑读取 44 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。

(1 行受影响)
表 ‘b‘。扫描计数 0,逻辑读取 2 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
*/

执行计划如图2所示:

bubuko.com,布布扣图2

我们可以看到,有聚集索引的表b比分区表a查询开销要少。


--------------------------------华丽的分割线---------------------------------

2、分区表(加非聚集索引)与普通表(加索引)对比

(聚集索引:一种索引,该索引中键值的逻辑顺序决定了表中相应行的物理顺序。

   非聚集索引:一种索引,该索引中索引的逻辑顺序与磁盘上行的物理存储顺序不同。

首先我们应该知道的是分区表是不可以添加聚集索引的,因为聚集索引是要对表中数据确定物理顺序的,这与分区冲突。所以我们为分区表a设置主键(自动生成了非聚集索引)。

设置之后,如图3所示:

bubuko.com,布布扣图3

执行代码如下:

set statistics io on
select * from a  where id=9999
select * from b  where id=9999
set statistics io off
/*

(1 行受影响)
表 ‘a‘。扫描计数 0,逻辑读取 3 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。

(1 行受影响)
表 ‘b‘。扫描计数 0,逻辑读取 2 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。

*/

执行计划如图4所示:

bubuko.com,布布扣图4

我们看到,加了非聚集索引的分区表a新能提升了一些。



--------------------------------华丽的分割线---------------------------------


结论:表分区并不是最好的优化方案,要在适当的需求下、适当的环境中来使用表分区。

















英语发音学习

原文:http://blog.csdn.net/qxbailv15/article/details/18698965

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