Stored Procedure(存储过程)编写经验和优化措施

GprMax正演模拟:为什么你的反射波‘消失’了?可能是直达波在捣鬼(附Python后处理脚本) 本文深入探讨了GprMax正演模拟中反射波信号被直达波淹没的现象,并提供了Python后处理脚本的实战指南。通过时域置零、自适应增益控制、频域滤波等多种技术,有效增强反射波信号,帮助用户解决探地雷达模拟中的常见问题。文章还包含详细的代码示例效果评估方法,适合GPR数据处理的研究人员工程师参考。 阅读详情

Stored Procedure(存储过程)编写经验和优化措施

一、前言:在经过一段时间的存储过程开发之后,写下了一些开发时候的小结和经验与大家共享,希望对大家有益,主要是针对SybaseSQL Server数据库,但其它数据库应该有一些共性。

二、适合读者对象:数据库开发程序员,数据库的数据量很多,涉及到对SP(存储过程)的优化的项目开发人员,对数据库有浓厚兴趣的人。

三、介绍:在数据库的开发过程中,经常会遇到复杂的业务逻辑和对数据库的操作,这个时候就会用SP来封装数据库操作。如果项目的SP较多,书写又没有一定的规范,将会影响以后的系统维护困难和大SP逻辑的难以理解,另外如果数据库的数据量大或者项目对SP的性能要求很,就会遇到优化的问题,否则速度有可能很慢,经过亲身经验,一个经过优化过的SP要比一个性能差的SP的效率甚至高几百倍。

四、        内容:

1、开发人员如果用到其他库的TableView,务必在当前库中建立View来实现跨库操作,最好不要直接使用“databse.dbo.table_name”,因为sp_depends不能显示出该SP所使用的跨库tableview,不方便校验。

 

2、开发人员在提交SP前,必须已经使用set showplan on分析过查询计划,做过自身的查询优化检查。

 

3、高程序运行效率,优化应用程序,在SP编写过程中应该注意以下几点:

a)        SQL的使用规范:

                         i.              尽量避免大事务操作,慎用holdlock子句,提高系统并发能力。

                       ii.              尽量避免反复访问同一张或几张表,尤其是数据量较大的表,可以考虑先根据条件提取数据到临时表中,然后再做连接。

                      iii.              尽量避免使用游标,因为游标的效率较差,如果游标操作的数据超过1万行,那么就应该改写;如果使用了游标,就要尽量避免在游标循环中再进行表连接的操作。

                     iv.              注意where字句写法,必须考虑语句顺序,应该根据索引顺序、范围大小来确定条件子句的前后顺序,尽可能的让字段顺序与索引顺序相一致,范围从大到小。

                       v.              不要在where子句中的“=”左边进行函数、算术运算或其他表达式运算,否则系统将可能无法正确使用索引。

                     vi.              尽量使用exists代替select count(1)来判断是否存在记录,count函数只有在统计表中所有行数时使用,而且count(1)count(*)更有效率。

                    vii.              尽量使用“>=”,不要使用“>”。

                  viii.              注意一些or子句和union子句之间的替换

                     ix.              注意表之间连接的数据类型,避免不同类型数据之间的连接。

                       x.              注意存储过程中参数和数据类型的关系。

                     xi.              注意insertupdate操作的数据量,防止与其他应用冲突。如果数据量超过200个数据页面(400k),那么系统将会进行锁升级,页级锁会升级成表级锁。

 

b)        索引的使用规范:

                         i.              索引的创建要与应用结合考虑,建议大的OLTP表不要超过6个索引。

                       ii.              尽可能的使用索引字段作为查询条件,尤其是聚簇索引,必要时可以通过index index_name来强制指定索引

                      iii.              避免对大表查询时进行table scan,必要时考虑新建索引。

                     iv.              在使用索引字段作为条件时,如果该索引是联合索引,那么必须使用到该索引中的第一个字段作为条件时才能保证系统使用该索引,否则该索引将不会被使用。

                       v.              要注意索引的维护,周期性重建索引,重新编译存储过程。

 

c)        tempdb的使用规范:

                         i.              尽量避免使用distinctorder bygroup byhavingjoincumpute,因为这些语句会加重tempdb的负担。

                       ii.              避免频繁创建和删除临时表,减少系统表资源的消耗。

                      iii.              在新建临时表时,如果一次性插入数据量很大,那么可以使用select into代替create table,避免log,提高速度;如果数据量不大,为了缓和系统表的资源,建议先create table,然后insert

                     iv.              如果临时表的数据量较大,需要建立索引,那么应该将创建临时表和建立索引的过程放在单独一个子存储过程中,这样才能保证系统能够很好的使用到该临时表的索引。

                       v.              如果使用到了临时表,在存储过程的最后务必将所有的临时表显式删除,先truncate table,然后drop table,这样可以避免系统表的较长时间锁定。

                     vi.              慎用大的临时表与其他大表的连接查询和修改,减低系统表负担,因为这种操作会在一条语句中多次使用tempdb的系统表。

 

d)        合理的算法使用:

根据上面已提到的SQL优化技术和ASE Tuning手册中的SQL优化内容,结合实际应用,采用多种算法进行比较,以获得消耗资源最少、效率最高的方法。具体可用ASE调优命令:set statistics io on, set statistics time on , set showplan on 等。

用LT1166+MOS管打造实验室级恒流源:闭环反馈与推挽驱动的深度调优 本文详细介绍了基于LT1166电流模式控制器与MOS管推挽架构的实验室级恒流源设计方法。通过闭环反馈调优动态响应优化,实现带宽达100kHz、纹波低于0.1%的高性能恒流输出,适用于精密仪器校准半导体测试等场景。重点解析了系统架构设计、MOS管选型策略以及频率响应测试等关键技术要点。 阅读详情

相关推荐

ORACLE存储过程性能优化技巧

ORACLE存储过程性能优化技巧,帮助你更好的学习oracle的方方面面的技术!

SQL存储过程Stored Procedure

SQL存储过程Stored Procedure) 什么是存储过程存储过程procedure)类似于C语言中的函数用来执行管理任务或应用复杂的业务规则存储过程可以带参数,也可以返回结果存储过程可以包含数据操纵语句、变量、逻辑 控制语句等  存储过程Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储数据库中,用户通过指定存储过程的名字并给

我为编程狂,我为外语狂 1万+

基于DIY Arduino的脉冲感应金属探测器-电路方案

探测器可以探测距离为15厘米的小金属硬币。硬件组件:Arduino Nano R3× 1HC-05蓝牙模块× 1通用晶体管PNP× 1通用晶体管NPN× 1功率MOSFET N沟道× 1运算放大器,运算放大器+比较器+参考× 11N4148 - 通用快速切换× 2电容10μF× 1电容1μF× 1单转电位器 - 100k欧姆× 1单转电位器-47k× 112个不同值的电阻× 1手动工具制造机器:烙铁(通用)原理介绍:脉冲感应(PI)系统使用单个线圈作为发射器接收器。该技术通过线圈发送强大的短脉冲(脉冲)电流。每个脉冲产生一个短暂的磁场。当脉冲结束时,磁场反转极性并突然崩溃,导致尖锐的电尖峰。这个尖峰持续几微秒并导致另一个电流通过线圈。该电流称为反射脉冲,非常短,仅持续约30微秒。然后发送另一个脉冲并重复该过程。如果一块金属进入磁场线的范围内,则接收线圈可以检测接收信号的幅度相位的变化。幅度变化量相位变化量表示金属的尺寸距离。

Stored Procedure存储过程基础知识详解

存储过程是做项目的必备技术,只要你面试找工作,数据库存储过程也是必考的,下面一起来了解存储过程的简单基本技术知识: 一、存储过程基本概念? 存储过程就是作为可执行对象存放在数据库中的一个或多个SQL命令。通俗来讲:存储过程其实就是能完成一定操作的一组SQL语句,它是由一些T-SQL语句组成的代码块,这些T-SQL语句代码像一个方法一样实现一些功能(对单表或多表的增删改查),然后再给这个代码块

独家记忆-涂仕明的专栏 8421

存储过程作用是什么,优缺点以及适用范围是什么?

此内容均来自互联网 存储过程Stored Procedure)是一组为了完成特定功能的SQL 语句集,经编译后存储数据库。中用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。 存储过程SQL 语句可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理。存储过程存储数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行...

weixin_34015566的博客 602

SqlServer存储过程编写经验优化措施 [转载]

一、前言:在经过一段时间的存储过程开发之后,写下了一些开发时候的小结经验与大家共享,希望对大家有益,主要是针对SybaseSQL Server数据库,但其它数据库应该有一些共性。 二、适合读者对象:数据库开发程序员,数据库的数据量很多,涉及到对SP(存储过程)的优化的项目开发人员,对数据库有浓厚兴趣的人。 三、介绍:在数据库的开发过程中,经常会遇到复杂的业务逻辑数据库的操作,这个时...

weixin_30443075的博客 446

转载 Stored Procedure存储过程编写经验优化措施

一、前言:在经过一段时间的存储过程开发之后,写下了一些开发时候的小结经验与大家共享,希望对大家有益,主要是针对SybaseSQL Server数据库,但其它数据库应该有一些共性。   二、适合读者对象:数据库开发程序员,数据库的数据量很多,涉及到对SP(存储过程)的优化的项目开发人员,对数据库有浓厚兴趣的人。   三、介绍:在数据库的开发过程中,经常会遇到复杂的业务逻辑对数...

agol83082486的博客 166

Stored Procedure(存储过程)编写经验优化措施

原文链接:http://dev.csdn.net/Develop/article/16/16698.shtm

翔宇的blog..... 1091

Sql Stored Procedure存储过程编写经验优化措施

一、前言:在经过一段时间的存储过程开发之后,写下了一些开发时候的小结经验与大家共享,希望对大家有益,主要是针对SybaseSQL Server数据库,但其它数据库应该有一些共性。 二、适合读者对象:数据库开发程序员,数据库的数据量很多,涉及到对SP(存储过程)的优化的项目开发人员,对数据库有浓厚兴趣的人。 三、介绍:在数据库的开发过程中,经常会遇到复杂的业务逻辑数据库的操作,这个时

zhangting1987的专栏 799

Stored Procedure存储过程编写经验优化措施 ()

Stored Procedure存储过程编写经验优化措施 ()[@more@]Stored Procedure存储过程编写经验优化措施XML:namespace prefix = o ns = "urn:schem...

cuiji1279的博客 136

SQL Server存储过程Stored Procedure创建及C#调用

存储过程就是已经编译好的、优化过的放在数据库服务器中的一些SQL语句;可供应用程序直接调用。使用存储过程有以下几个优点: 1、执行速度比普通的SQL语句快 2、便于集中控制 3、可以降低网络的通信量 4、保证数据库的安全性完整性 5、灵活性创建存储过程 可以采用Transact-SQL语句来创建存储过程Stored Procedured。在Microsoft SQL Server Ma

tanzhangwen的专栏 7662

全面详解 MySQL 存储过程Stored Procedure

存储过程是预编译的 SQL 语句集合,封装在数据库中,用户可以通过名字调用它,并传入参数完成一系列数据库操作。换句话说,存储过程数据库中的函数,你不必每次都写 SQL,而是只要调用,就能重复使用逻辑。存储过程数据库中封装 SQL 的重要机制,适用于封装业务逻辑、提高性能安全性。通过参数实现输入输出控制,配合事务流程控制增强逻辑性。尽管调试略麻烦,但在一些特定场景(如注册、权限控制、日志写入等)非常实用。推荐配合连接池、后端接口调用实现自动化业务流程。

m0_53518956的博客 1244
上一篇: JBuilder7和WebLogic7集成开发Struts一点经验
下一篇: 使用WEBLOGIC7.0配置ProxyServer实例
s00n
博客等级 码龄24年 5粉丝 37原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值