sqlserver优化

1,创建索引,索引的字段尽量小,一个表最好不要超过6个索引;

2,避免全表扫描。创建索引后,应尽量避免操作使索引失效,导致全表扫描

        a,避免在 where 子句中对字段进行 null 值判断,可以在num上设置默认值0,确保表中num列没有null值;

        b,避免在 where 子句中使用!=或<>操作符;

        c,避免在 where 子句中使用 or 来连接条件,可以用union all来连接;

        d,避免使用in 和 not in,连续的值用betwwen;

        e,模糊查询尽量使用后模糊格式(like ‘a%’);

        f,不要在 where 子句中的“=”左边进行函数、算术运算或其他表达式运算;

        h,如果该索引是复合索引,那么必须使用到该索引中的第一个字段作为条件时才能保证系统使用该索引,否则该索引将不会被使用,并且应尽可能的让字段顺序与索引顺序相一致;

 3,尽量使用数字型字段,若只含数值信息的字段尽量不要设计为字符型,因为引擎在处理查询和连接时会逐个比较字符串中每一个字符,而对于数字型而言只需要比较一次就够了;

4,需要多少字段返回多少字段,不要返回不必要的字段;

5,尽量控制返回的数据行数,不要返回全部数据;

6,合理的冗余。冗余数据库可以分散数据库压力,冗余表可以分散数据量大的表的并发压力,也可以加快特殊查询的速度,冗余字段可以有效减少数据库表的连接,提高效率;

7,使用事务中需要做到尽量避免死锁、尽量减少阻塞,事务操作过程要尽量小、不应该有交互、按同一顺序访问对象;

8,如果语句很复杂,连接太多,可以考虑用临时表和表变量分步完成;如果需要多次用到一个大表的同一部分数据,考虑用临时表和表变量暂存这部分数据;如果需要综合多个表的数据,形成一个结果,可以考虑用临时表和表变量分步汇总这多个表的数据。关于临时表和表变量的选择,一般说表变量在内存,速度比较快,但是在数据量较多的情况下临时表速度反而更快。

9,当服务器的内存够多时,配制线程数量 = 最大连接数+5,这样能发挥最大的效率;否则 配制线程数量<最大连接数,启用SQL SERVER的线程池来解决;

10,尽量少用视图,效率低。对视图操作比直接对表操作慢,可以用存储过程来代替,特别的是不要用视图嵌套,嵌套视图增加了寻找原始资料的难度;

11,升级硬件,提高网速,增加服务器内存cpu;

12,连接表时可以将大表变为小表,先筛选一部分数据再连接其他的表;

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值