


如果说有10条数据,那么大不了每条去逐一检查,人为处理,如果有上百条数据,也可以考虑,如果数据上到千万级别,甚至过亿,那不是手工能解决的了,必须通过工具或者程序进行处理,尤其海量的数据中,什么情况都可能存在,例如,数据中某处格式出了问题,尤其在程序处理时,前面还能正常处理,突然到了某个地方问题出现了,程序终止了。今天就讲一下SQL Server数据库的部分优化方法。

1. 关键字段建立索引
索引是与表或视图关联的磁盘上结构,可以加快从表或视图中检索行的速度。 索引包含由表或视图中的一列或多列生成的键。 这些键存储在一个结构(B 树)中,使 SQL Server 可以快速高效地找到与键值关联的行。索引是把双刃剑并不是任何时候都适合使用,正确的选择索引设计能获的最佳性能,错误的使用索引不仅不会提升而且还会降低性能。
2. 建立缓存机制
缓存机制指的是在执行任何查询时,SQL Server都会将数据读取到内存,数据使用之后,不会立即释放,而是会缓存在内存Buffer中,当再次执行相同的查询时,如果所需数据全部缓存在内存中,那么SQL Server不会产生Disk IO操作,立即返回查询结果。
3. 使用临时表和表变量
临时表/表变量的使用可以降低语句的复杂度,当很多表关联的时候,我们可以降筛选度大的数据存放在临时表中,在通过临时表/表变量去和别的表关联,从而提高性能。需要注意的是临时表是利用了硬盘(tempdb数据库) ,表变量是占用内存,因此小数据量当然是内存中的表变量更快。当大数据量时,由于太消耗内存所以不能用表变量了,大数据量时适合用临时表。
4. 建立视图或者物化视图
某个查询内部、某个存储过程内部,或者从另一个视图内部来使用视图。通过向视图添加函数、join 等等,我们可以向用户精确地提交我们希望提交的数据。客户端只要对视图写简单的代码,就能返回我所需要的数据,一些复杂的逻辑操作,放在视图来完成。视图还有另外一个作用就是隐藏敏感数据提高数据库安全性。
5. 优化查询SQL语句
避免在where子句中对字段进行 null 值判断、任何时候都不要用“*”查询所有字段、用exists代替in和like等,SQL语句优化就太多就不一一说明,提高查询速度的方法很多,但是更多的情况下需要结合实际,反复试验比较不同的语句以得到最佳方案。

在当今大数据盛行的时代,SQL数据库性能优化尤其重要,教科书无法给你最好的方案,一切优化设计都是要结合实际情况,通过实践测试才能得出最适合的方案。
