SQLServer性能提高的方法(转)


1:不要在列上使用函数,可以在标量上使用函数

如 WHERE DATEADD(day, 15, OrderDate) = '07/23/1996'改成OrderDate = DATEADD(day, -15, '07/23/1996');

2:不要声明一个char变量去和nchar列去比较,相反nvarcha和varchar也一样,在比较的时候会隐式使用Convert函数,进而可能无法使用索引。

3:不必要的表不要join进来;尽量避免使用DISTINCT从句

4:select * 不仅会加大网络流量,而且更容易引起表扫描;使用where语句来限制你返回的行,对大结果集进行分页返回,仅仅返回你需要的行和列

5:like后面不要跟前面是通配符的单词;像<>和not like等谓词尽量少用,尽量用IF EXISTS和IF NOT EXISTS来取代,这样可以使用索引

6:存储过程的好处:逻辑分离,把业务逻辑和数据处理逻辑分离;调整SQL语句不需要重新部署程序;减少网络带宽;提高安全性和集成性,可以给存储过程指派访问权限等[不确定是否可以];参数化查询可以防止SQL注入;防止查询计划重编译

7:游标的使用会反复提取行,加锁,管理锁,返回行等一系列操作,要用也尽量用只读向前游标,少用火线游标,它们会增加对tempdb的压力[不确定]。通常游标用来处理连续的行,如果这个表有主键,可以用一个while语句来取代游标的使用

8:事务在开始后会锁定资源以防止其他事务执行,所以要保持事务尽量短。可以在应用里开始一个事务,常用的做法是在开始事务前验证数据的有效性,当然在事务里也需要验证数据,但这已经避免了好多可能在事务里回滚的机会

9:

优质内容筛选与推荐>>
1、有没有windows mobile 5.0上获取手机号码的C#代码
2、diy
3、ASP.NET Core 在 Swagger UI 中显示自定义的 Header Token
4、SSM调用oracle存过,报Could not set property 'result' of 'class java.lang.Class' with value '1' Cause: org.
5、《CLR Via C# 第3版》笔记之(五) - C#中的伪Union类型


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号