数码资讯
oracle存储过程编写经验及优化措施(共享)
首先,前言:经过一段时间的存储过程开发,我们写了一些开发的心得和心得与大家分享,希望对大家有好处。 二、适合读者:数据库开发程序员,数据库的数据量很大,涉及到对数据库开发人员和SP数据库开发人员感兴趣的人。 三、引言:在数据库的开发过程中,经常遇到复杂的业务逻辑和数据库操作。在那个时候,我们将使用S
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
首先,前言:经过一段时间的存储过程开发,我们写了一些开发的心得和心得与大家分享,希望对大家有好处。
二、适合读者:数据库开发程序员,数据库的数据量很大,涉及到对数据库开发人员和SP数据库开发人员感兴趣的人。
三、引言:在数据库的开发过程中,经常遇到复杂的业务逻辑和数据库操作。在那个时候,我们将使用SP来封装数据库操作。如果项目SP,写作,没有一定的规范,理解和SP逻辑系统的困难会影响今后的维修,如果数据库或项目大量的SP要求的性能数据,将满足优化问题,否则速度会变慢,通过个人的经验,一个经过优化后的SP要比SP甚至几百倍的性能差,效率低。
四。内容:
1,如果开发人员使用其他库的表或视图,则需要在当前库中建立视图,以实现跨库操作。最好不要直接使用databse.dbo.table_name,因为sp_depends不能显示跨库表或视图使用的SP,和不方便验证。
2, the developer must have used set Showplan on to analyze the query plan before submitting SP, and have done its own query optimization check.
3,程序运行效率高,优化应用,在SP写作过程中应注意以下几点:
(a)SQL使用规范:
一、避免大的经营和使用HOLDLOCK条款仔细地提高系统的并发性。
II。尽量避免重复访问同一或多个表,尤其是那些有大量数据的表。可以考虑先从临时条件提取数据到临时表,然后再进行连接。
尽量避免使用游标,因为游标效率不高。如果游标操作超过1万行,则应重写它们。如果使用游标,我们应该尽可能避免在游标循环中进行表连接操作。
四、注意句子的写作位置。我们必须考虑句子的顺序。根据索引的顺序和程度,确定条件子句的顺序,尽量保持字段的顺序与索引的顺序一致,从大到小不等。
在WHERE子句的左边不执行函数、算术运算或其他表达式,否则系统可能无法正确使用索引。
尝试使用存在,而不是选择计数(1)来确定是否有记录。计数函数仅在统计表中的所有行使用时使用,计数(1)比计数(*)效率更高。
试着使用七。不要使用> Viii。注意从句或从句之间的替换。
九、注重连接表之间的数据类型,避免不同类型数据之间的连接。
x注意存储过程中参数和数据类型之间的关系。
西。注意在插入和更新操作的数据量,防止与其他应用程序冲突。如果数据量超过200个数据页(400K),该系统将升级锁和页锁将升级到表锁。
B)索引使用规范:
是一个索引的创建要与应用结合考虑,建议大的OLTP表不应超过6指标。
II。使用索引字段作为查询条件,尽可能的,尤其是聚簇索引,如果必要的话,可以力,指定指数通过指标index_name。
避免大型表查询的表扫描,必要时考虑新索引。
当索引字段用作条件时,如果索引是一个联合索引,则IV必须使用索引中的第一个字段作为条件,以确保不使用索引,否则索引将不被使用。
五、要注意索引的维护,定期整理索引,并重新编译存储过程。
C)对tempdb的使用规范:
我尽量避免使用不同,排序,组,具有加入,和***的单纯,因为这些语句tempdb的负担加重。
II。避免临时表的频繁创建和删除,减少系统表资源的消耗。
当III.构建新的临时表时,如果在单个时间内插入大量数据,则可以使用选择而不是创建表来避免日志并提高速度。如果数据量不大,为了减轻系统表的资源,我们建议创建表,然后插入。
IV.如果一个临时表有大量的数据,需要索引,那么我们应该把临时表和索引的过程放在一个单独的子存储过程中,这样我们就可以确保系统能够很好地使用临时表的索引。
如果使用临时表,必须显式地删除存储过程结束时的所有临时表、第一个截断表和随后的表,这样系统表可以被长期锁定。
六、慎用大的临时表的连接查询和其他大型表减少系统表的负担,因为这种操作会在一份声明中使用tempdb的系统表的许多倍。
d)合理的算法使用:
根据SQL优化技术和SQL优化上述内容在ASE的调优手册,结合实际应用,我们比较了各种算法得到最少的消耗,最有效的方法。具体的电子调谐命令可用:设置IO统计,统计时间设置,设置显示计划,等等。
二、适合读者:数据库开发程序员,数据库的数据量很大,涉及到对数据库开发人员和SP数据库开发人员感兴趣的人。
三、引言:在数据库的开发过程中,经常遇到复杂的业务逻辑和数据库操作。在那个时候,我们将使用SP来封装数据库操作。如果项目SP,写作,没有一定的规范,理解和SP逻辑系统的困难会影响今后的维修,如果数据库或项目大量的SP要求的性能数据,将满足优化问题,否则速度会变慢,通过个人的经验,一个经过优化后的SP要比SP甚至几百倍的性能差,效率低。
四。内容:
1,如果开发人员使用其他库的表或视图,则需要在当前库中建立视图,以实现跨库操作。最好不要直接使用databse.dbo.table_name,因为sp_depends不能显示跨库表或视图使用的SP,和不方便验证。
2, the developer must have used set Showplan on to analyze the query plan before submitting SP, and have done its own query optimization check.
3,程序运行效率高,优化应用,在SP写作过程中应注意以下几点:
(a)SQL使用规范:
一、避免大的经营和使用HOLDLOCK条款仔细地提高系统的并发性。
II。尽量避免重复访问同一或多个表,尤其是那些有大量数据的表。可以考虑先从临时条件提取数据到临时表,然后再进行连接。
尽量避免使用游标,因为游标效率不高。如果游标操作超过1万行,则应重写它们。如果使用游标,我们应该尽可能避免在游标循环中进行表连接操作。
四、注意句子的写作位置。我们必须考虑句子的顺序。根据索引的顺序和程度,确定条件子句的顺序,尽量保持字段的顺序与索引的顺序一致,从大到小不等。
在WHERE子句的左边不执行函数、算术运算或其他表达式,否则系统可能无法正确使用索引。
尝试使用存在,而不是选择计数(1)来确定是否有记录。计数函数仅在统计表中的所有行使用时使用,计数(1)比计数(*)效率更高。
试着使用七。不要使用> Viii。注意从句或从句之间的替换。
九、注重连接表之间的数据类型,避免不同类型数据之间的连接。
x注意存储过程中参数和数据类型之间的关系。
西。注意在插入和更新操作的数据量,防止与其他应用程序冲突。如果数据量超过200个数据页(400K),该系统将升级锁和页锁将升级到表锁。
B)索引使用规范:
是一个索引的创建要与应用结合考虑,建议大的OLTP表不应超过6指标。
II。使用索引字段作为查询条件,尽可能的,尤其是聚簇索引,如果必要的话,可以力,指定指数通过指标index_name。
避免大型表查询的表扫描,必要时考虑新索引。
当索引字段用作条件时,如果索引是一个联合索引,则IV必须使用索引中的第一个字段作为条件,以确保不使用索引,否则索引将不被使用。
五、要注意索引的维护,定期整理索引,并重新编译存储过程。
C)对tempdb的使用规范:
我尽量避免使用不同,排序,组,具有加入,和***的单纯,因为这些语句tempdb的负担加重。
II。避免临时表的频繁创建和删除,减少系统表资源的消耗。
当III.构建新的临时表时,如果在单个时间内插入大量数据,则可以使用选择而不是创建表来避免日志并提高速度。如果数据量不大,为了减轻系统表的资源,我们建议创建表,然后插入。
IV.如果一个临时表有大量的数据,需要索引,那么我们应该把临时表和索引的过程放在一个单独的子存储过程中,这样我们就可以确保系统能够很好地使用临时表的索引。
如果使用临时表,必须显式地删除存储过程结束时的所有临时表、第一个截断表和随后的表,这样系统表可以被长期锁定。
六、慎用大的临时表的连接查询和其他大型表减少系统表的负担,因为这种操作会在一份声明中使用tempdb的系统表的许多倍。
d)合理的算法使用:
根据SQL优化技术和SQL优化上述内容在ASE的调优手册,结合实际应用,我们比较了各种算法得到最少的消耗,最有效的方法。具体的电子调谐命令可用:设置IO统计,统计时间设置,设置显示计划,等等。
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。