SQL Server数据库优化:如何设计索引才能提高数据查询性能?

当你发现随着系统升级,版本迭代,用户不断增加,你的系统逐渐变慢的时候,就要考虑一下是不是需要对数据库进行优化了(当然,性能瓶颈不一定在数据库上),通常来说,优化数据库的手段,我们最先想到的就是索引

索引的目的是为了让查询更快。

为了保证你创建的索引能够提升性能而不是降低性能,作为开发人员,该选择什么样的列和数据类型来建立索引呢?

根据相关官方资料显示,有以下注意事项可以参考:

一、哪些要建立索引

  1. 定义主键的列
  2. 有外键的列
  3. 经常查询的数据列
  4. 谓词(就是在where中使用的列)
  5. 排序分组(ORDER BY、GROUP BY)的列
  6. 只增加的列,如果一个列的数据绝大多数是做增加处理,这样的列就可以建立索引

二、哪些不要建立索引

  1. 重复值较多的列不要建立索引,比如用户表的性别字段,最多三种值(男、女、未知)
  2. text、image、byte[]列不要建立索引
  3. 更新频繁的列不要建立索引,因为如果该列有索引,那么在更新值的时候同时需要更新索引,这样会导致查询变快,更新变慢

另外,有些资料上说,表的索引要有数量限制单表索引的数目一般不要超过3个,最多不要超过5个。主要是考虑到添加索引列过多会影响磁盘空间和索引维护性能.但是,笔者的观点:如果我增加一个索引,能明显提升数据库查询性能,为什么要墨守这样的限制呢,我不知道35这样的数字怎么来的,至今也没有看到有数据能证明单表索引超过5个后性能表现不好的。

所以,笔者认为单表增加索引的多少,哪些字段要增加索引,要根据每个SQL查询的频率和每个查询的重要性,同时兼顾磁盘空间和索引维护成本来综合平衡,找出最佳的优化方案

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值