VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 数据库 > sql数据库 >
  • sql语句大全之sql性能优化、查询提速总结

sql性能优化、查询提速总结
这次sql性能优化,不讨论缓存服务器如redis等来增强,仅从表字段设置和业务操作角度考虑。
 
场景1: 
表数据量大,比如几百上千万的流水数据表、跑批过程表查询。 
1、根据业务做分库分表存储,降低表的数量级。比如按流水时间或者场景进行分表保存 
2、增加常用查询表字段的索引 
3、降低不必要查询字段查询,通过过滤不必要的字段查询,仅仅过去业务所需字段,当查询数量级上升一定层级,可以降低数据库服务器的计算压力和流量压力。 
4、
 
场景二: 
表连接频繁的表 
提升性能办法: 
1、有些常用表一直被连接起来进行统计,所以没理由不能先预暂存起来,在此基础上进行查询 
2、当出现数据量大的表连接查询时候,可以考虑先从表中查询出临时表再做连接查询,这些避免大量笛卡尔积计算。因为工作就遇到一些报表sql设计,其中有许多表连接查询,因为设计不好导致查询效率长度几秒甚至更长。此时可以通过分析sql执行先后顺序,进行一定嵌套查询出子集再进行相应表连接查询,这样就极大的提升了查询效率。 
场景三: 
判断某些数据是否存在某些表中 
1、判断表的数据量多少,然后根据设置查询的先后关系使用exits或in来查询所需的数据
 
场景四: 
批量操作,如删除、更新 
1、因为有事物的关系、数据量打的更新、删除操作会影响性能,出错回滚的代价很大。此时缩小批量操作来提高性能是可行的。
 
场景五: 
少使用视图 
1、视图虽然封装sql的表,但如果视图多,或者关系相互调用,会造成不好维护,过度依赖后,很难从全局层面来优化sql的执行效率,因为视图容易掩盖一些效率低下的sql。
 
场景六: 
使用like场景 
1、当有些业务查询需要使用like查询操作时候,要考虑like执行效率低下的情况,如果可以先使用其他非字段条件查询得到子集在进行like查询会效率更高的。
 
场景七 
表字段设置不精确 
1、尽量根据业务需求设计长度够用数据类型即可,比如业务流水号32位 ,就要设置为varchar(32) 别觉得没关系设置成varcahr(50)等, 是枚举类型就尽量设置成该类型,数字类型的如1-9的,就可设置为tinyint
 
待继续完善
--------------------- 
作者:仰望天空YF 
来源:CSDN 
原文:https://blog.csdn.net/yunfeng482/article/details/79146100 
版权声明:本文为博主原创文章,转载请附上博文链接!

相关教程