SQL Server索引创建原则

什么样的表需要建立索引
表小的没必要建立索引,可能查找索引的时间都比扫描表还长。
操作对索引的影响
索引会影响 INSERT、UPDATE、DELETE 和 MERGE 语句的性能,因为进行修改时索引会发生变化,建立索引时应该避免大量更新列的的操作,而选择时将查询列作为索引列,或者是两个表的关联字段和查询条件字段作为索引列。
字段长度的选择
. 索引列要选择较短的列,不能将 ntext、text、image、varchar(max)、nvarchar(max) 和 varbinary(max) 数据类型的列指定为索引键列。
何为聚集索引
存储记录是物理上连续的,例如查询自然数大于1的;
在聚集索引中,表中行的物理顺序与键值的逻辑(索引)顺序相同。一个表只能包含一个聚集索引。 如果某索引不是聚集索引,则表中行的物理顺序与键值的逻辑顺序不匹配。与非聚集索引相比,聚集索引通常提供更快的数据访问速度。
由于聚集索引是给数据排序,不可能有多种排法,所以一个表只能建立一个聚集索引。科学统计建立这样的索引需要至少相当与该表120%的附加空间,用来存放该表的副本和索引中间页,但是他的性能几乎总是比其它索引要快。
由于在聚集索引下,数据在物理上是按序排列在数据页上的,重复值也排在一起,因而包含范围检查(bentween,<,><=,>=)或使用group by 或order by的查询时,一旦找到第一个键值的行,后面都将是连在一起,不必在进一步的搜索,避免啦大范围的扫描,可以大大提高查询速度。
何为非聚集索引
逻辑上连续,物理存储并不连续的,字典的部首查询就是一个非聚集索引.;
sqlserver默认情况下建立的索引是非聚集索引,他不重新组织表中的数据,而是对每一行存储索引列值并用一个指针指向数据所在的页面。他像汉语字典中的根据‘偏旁部首’查找要找的字,即便对数据不排序,然而他拥有的目录更像是目录,对查取数据的效率也是具有的提升空间,而不需要全表扫描。

一个表可以拥有多个非聚集索引,每个非聚集索引根据索引列的不同提供不同的排序顺序。
. 索引类型的选择及应用场景

  1. 列经常被分组排序:聚集索引和非聚集索引都可以使用;
  2. 返回某个范围内的数据(类似where 区间查询):使用聚集索引;
  3. 查询极少或者极少不同值的(类似where id=1):不适合加索引;
  4. 小数目的不同值(类似 where id=1 or id=2.。。。):使用聚合索引;
  5. 大数目的不同值:使用非聚合索引;
  6. 频繁更新的列:使用非聚集索引;
  7. 外键列:聚集索引和非聚集索引均可以;
  8. 主键列:聚集索引和非聚集索引均可以;
  9. 频繁修改索引的列:使用非聚集索引;
    10.聚集索引一个表只能有一个,而非聚集索引一个表可以存在多个。

狂建索引也会带来很多影响
1、提高了查询速率,降低了更新表效率,数据库表不但要保存数据,还要保存索引文件;
2、索引会占用磁盘空间的索引文件,多个索引影响很明显;
3、索引只是一个优化因素,还应该考虑其他例如sql语句的优化。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值