SQLServer SQL语句优化简介
在日常的工作中,或多或少会遇到一些较为复杂的SQL,当我们发现这些语句执行的慢时,总是会想办法对其修改,让它变得更快一些。本篇就来简单介绍下SQLSERVER下SQL的语句调优方法。
本文结构:
- 语句的执行顺序
- 优化思路
- 使用索引
- 写出简练的语句
在日常的工作中,或多或少会遇到一些较为复杂的SQL,当我们发现这些语句执行的慢时,总是会想办法对其修改,让它变得更快一些。本篇就来简单介绍下SQLSERVER下SQL的语句调优方法。
本文结构:
之前从一位大佬的文章中看到:缓存是提高性能最好的方式。从我个人的项目经历和所做的相关性能优化工作来看,对此深表认同。
对于业务系统而言最重要的就是数据,一般来说这种类似ERP的业务系统基本上都是使用关系型数据库,大部分的数据都是从数据库中取,属于磁盘IO,而缓存系统则都是放在内存中操作。一个是内存读写,一个是磁盘IO,效率自然是天壤之别。
本文从一下几个方面来介绍缓存系统的原理
使用Entity Framework方式连接数据库时,处于安全性考虑,会把App.config里面的connectionString放到配置中心或者加密。加密是为了不暴露数据库连接信息,而放到配置中心好处则更加明显,如果出现集群部署,只需要在配置中心设置一次,便能在所有服务器中生效,大大节省了维护时间。有时候,当数据库出现故障,需要手工切换数据库时,就需要在不重启程序的情况下,更改连接字符串。本篇就来谈谈C#如何在程序中动态的修改connectionString.
使用Entity Framework连接SQLSERVER数据库,在实现数据导入功能时,一开始使用AddRange()然后Save()操作,发现数据量一大,效率下降的很厉害。
测试发现,一个只有几列的表,插入上万条数据时,可能需要20s左右,甚至出现卡死。以前只知道EF效率慢,不如第三方的ORM框架,如Drapper,不用不知道,一用吓一跳。
于是,自然地要改用批量插入,随手一查你能够发现EF也有扩展能够较好的解决问题,但是收费的,因此只好尝试微软推荐的SQLSERVER批量插入的方式:SQLBulkCopy。
在安装VS2017时,提示安装程序清单签名验证失败。一开始以为是安装包的问题,结果换了其他的安装包及在线安装均不行;后面怀疑是公司电脑权限控制的问题,找IT解决无果。
于是继续求助Google,后面发现博客园上的一篇文章的解决方案,于是转载至此。