提升项目性能的几个简单方法

时间:2021-09-09 23:28:30

       在工作中,有时我们往往因数据加载缓慢而烦恼,尤其是在大数据下就更让人耿耿于怀了,加载慢有很多原因,但可能我们在SQL语句上多努力20%就很有可能使整体的性能上升80%,可能在代码上优化10%就再提升10%。我们的目的只有一个,那就是让速度跑起来。以下是我在项目中的实战经验,并且屡试不爽,希望能帮你提升那90%的性能


一、SQL SELECT语句

        1.SQL语句中禁止出现SELECT *,哪怕是查询整张表的全部字段;

        2.对数据及时性要求不高的表添加 WITH (NOLOCK);

        3.避免跨库查询,对非跨库查询只写表名即可,不能添加前缀  [DATABASENAME].[DBO];

        4.计数的查询使用 COUNT(主键ID) 代替 COUNT(*);

        5.只查询是否存在记录时使用EXISTS或(TOP 1 主键ID) 即可;

        6.将复杂的SQL语句拆分,最后在合并,建议使用存储过程;

        7.表设计要合理,避免在语句中对字段类型进行转换,删除JOIN和WHERE子句中的转换与计算字段;

        8.大数据下使用连接查询代替子查询,必要时可使用视图;

        9.使用表变量代替临时表,触发器不建议多用,尽量不使用游标(大数据下会导致连接超时);

        10.使用UNION或NUION ALL 代替OR查询;

        11.尽量使用全值查询代替LIKE查询,避免不了也尽可能减少通配符('%Value' 、'Value%');

        12.对于不必要的表或记录和重复的表或记录都应该删除掉;

        13.进入GROUP BY的数据应该是有效的数据,没必要的数据之前就筛选掉;

        14.在索引列上使用IS NULL和IS NOT NULL会使索引失效,用 !='' 或 >0 代替。


二、检查索引

       大数据下索引非常重要也非常有效,学问很深,值得研究,建议在SQL语句的WHERE和JOIN部分中用到的所有字段上,都应该加上索引。


三、程序角度

       1.SQL连接开闭要合理及时;

       2.尽可能少的请求数据库,多次请求可使用存储过程代替;

       3.使用DATATABLE 代替DATAREADER;

4.使用参数化查询,哪怕只有一个条件;

5.可将不常改变的数据放入缓存。


程序架构设计、服务器配置对项目的性能也有很大影响。在改变不了这两者的情况下,还是老老实实的优化自己的代码吧!本人资历尚浅,如有问题还望多多指教。此篇可能与网上其他会有雷同,仅当个人记录,如若需要可尽兴转走。