SQLServer 聚集索引优化方案
来源:互联网 发布:k svd算法 编辑:程序博客网 时间:2024/05/23 15:55
一、主键与聚集索引并不是一对一匹配的
一般情况下我们都认为,聚集索引和主键是相互匹配的,因为只要你在SQLServer表中定义了一个主键,那么SQLServer会为这个主键自动添加聚集索引.但是,如果你先在表中基于任意一列建立聚集索引,然后再选择另一列作为主键,这时,这个SQLServer将会基于这个主键建立一个唯一非聚集索引.
二、聚集索引会被应用到每个查询中
一个SQLServer表内,最多只能有一个聚集索引,并且表中数据行存储的位置由聚集索引来决定.表中非聚集索引与数据行的映射,是通过聚集索引来定位的.当聚集索引执行插入操作时,数据表中的行要进行移动,同时该表中所有非聚集索引要重新排列,这是非常消耗资源并且影响SQLServer响应速度的.
所以SQLServer表中的聚集索引一定要避免新添加数据时执行插入操作,保证表中新添加的数据是从索引的尾部追加的.这样做可以保证聚集索引相对静态,对非聚集索引的影响也会减小.
创建聚集索引时,要选择那些数据会不断增加的字段,最好的例子就是bbs发帖表中,帖子发布时间,这个字段中的数据是随时间增长的,理论上讲是不会重复的,最适合建立聚集索引.
如果你的聚集索引真的做到了不断增加,那么它的填充因子就应该是100%,这个数值越高,每个8KB大小的索引页记录的行数就越多,进行相同的扫描时IO、内存和CPU资源就用的越少,换句话说就是查询效率更高.
三、聚集索引的数据类型位宽将影响查询效率
聚集索引列的数据类型位宽越小,查询效率越高,并且由于非聚集索引是依靠聚集索引来影射SQLServer表中数据行的,聚集索引的位宽必将影响表中所有非聚集索引的大小.通常适合作为聚集索引的类型包括:
Smallint,int,bigint,datetime和UNIQUEIDENTIFIER.
- SQLServer 聚集索引优化方案
- SQLServer 聚集索引优化方案
- SQLSERVER聚集索引与非聚集索引
- SQLSERVER聚集索引与非聚集索引
- SQLSERVER聚集索引与非聚集索引
- SQLServer如何创建聚集索引
- 使用NEWSEQUENTIALID解决GUID聚集索引问题 SQLServer数据表主键的另一个方案
- SQLSERVER聚集索引与非聚集索引(转载)
- SQLSERVER聚集索引与非聚集索引(转)
- SQLSERVER聚集索引与非聚集索引(转)
- SQLSERVER聚集索引与非聚集索引区别
- SQLSERVER聚集索引与非聚集索引区别
- SQLSERVER聚集索引与非聚集索引(转)
- SQLServer的聚集索引和非聚集索引
- sqlserver 聚集索引和非聚集索引实例
- SQLSERVER聚集索引与非聚集索引(转)
- SQLServer的聚集索引和非聚集索引
- sql优化之:数据库索引创建原则,or/in/union与索引优化,聚集索引/非聚集索引/联合索引/索引覆盖,MySQL冗余数据的三种方案,MySQL双主一致性架构优化(来源:架构师之路)
- WebService相关概念 转
- Windows进程分析管理器:进程与父进程关系
- HTTP Status 500 - No action instance for path /login could be created
- AIX服务inetd的查看和操作
- JAVA几个常见错误简析
- SQLServer 聚集索引优化方案
- MySql 安装教程-实录
- WinCE注册表操作API函数(二)
- (转帖)深入理解Midlet类
- DIV水平和垂直居中
- Fixed定点数
- 计划的本质
- 09年7月16日活动主题:Social Media应用
- 共同讨论