的时候,不用再对其中的SQL等语句进行解析,从而提高速度;3如果有多个应用,使用了不同的开发语言,当有某些关键的或者复杂逻辑希望共享,则可以考虑使用存储过程或者函数。因为存储过程等在数据库一级是共享的;4增强了应用对数据库的依赖,如果打算将来移植数据库的话,使用得越多,则移植的困难越大;数据库中的业务逻辑越多(存储过程等),应用以及存储过程等的维护难度也会增大;5通常存储过程等没有面向对象的特性,不容易设计出易于扩展的结构。当存储过程比较复杂时,或者它们相互间的调用关系比较复杂时,可能难于维护;
5SQL的设计和使用
51Sql书写规范
511尽量不要写复杂的SQL:过于复杂的SQL可以用存储过程或函数来代替,效率更高;甚至如果能保证不造成瓶颈的话,把条SQL拆成多条也是可以的。这与一般的编码规范很相似的,首先是要易懂。易懂也就意味着容易维护,对较为复杂的sql语句加上注释,说明算法、功能注释风格:注释单独成行、放在语句前面。512应对不易理解的分支条件表达式加注释;
513对重要的计算应说明其功能;
514过长的函数实现,应将其语句按实现的功能分段加以概括性说明;
515每条复杂SQL语句均应有注释说明(表名、字段名主要是说明此句SQL执行的作用及所取得结果集的意义);
516常量及变量注释时,应注释被保存值的含义必须,合法取值的范围可选__________;
517可采用单行多行注释。(或方式,不同数据库可能语法不同);
518连接符or、i
、a
d、以及=、、等前后加上一个空格;
519不要用SELECT:SELECT语句中写出必要的要选择的全部列名,增强语句可读性,避免不必要的选择;SELECT增加了对所有字段的依赖,当表增加了字段后,有可能发生错误;此外还可能增加了数据的流量,查询了一些实际不需要的字段;
5110避免长事务(Tra
sactio
):长事务容易造成死锁,应该避免,单个事务使用的数据库和系统资源不宜超过总资源12(参考值,各应用可以根据实际情况
f进行适量调整这种情况不适用于数据仓库);
5111行最长不能超过80字符同一语句不同字句之间逗号以后空格其他分割符前空格where子句书写时,每个条件占一行,语句令起一行时,以保留字或者连接符开始,连接符右对齐;
5112多表连接时,使用表的别名来引用列;
5113SQL中对视图的引用:在不太清楚视图用法的情况下,尽量不用。只是因为视图中有自己想要的字段就拿来用,是相当普遍和错误的用法。原因如下:
51131增加了不必要的数据流r