欢迎来到天天文库
浏览记录
ID:37963512
大小:27.50 KB
页数:5页
时间:2019-06-04
《数据库操作规范》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、一、object命名规则*表命名规则表命名是以英文名称为原则,表示该表的具体意义,例如商品表可以叫item,商品图片表可以叫item_image。如果公司业务复杂,数据库过多,schema也比较多,则要根据schema的来命名,例如:在crm下面可以用crm开头命名CRM_USER.临时表应该以tmp开头TMP_USER,这样的表一段时间后将会清除。备份数据使用的表应该使用bak开头,这样的表在被确认不需要后将被清除。注:表的命名不能超过30个字符 *字段命名表达该字段的含义不能用oracle中的保留字注释一定要详细加上,如status状态,0有效,1删除注:字段长
2、度也尽量简化(如crm_test_times_currently,太长) *索引的命名规则主键(primarykey)索引 PK_表名_列名唯一键(uniquekey)索引 UK_表名_列名普通索引 IND_表名_列名注:索引的命名不能超过30个字符(在索引中的列名可以简写,一般情况下不简写索引中的表名) *过程与函数过程的命名规则 以SP_开头,过程中要注解此过程的作者,编写时间,此过程的功能函数的命名规则 以FUN_开头,函数中要注解此函数的作者,编写时间,此函数的功能变量的命名规则 本地变量以l_开头; 传递参数:p_变量名_in (传入
3、) p_变量名_out(传出) 游标类型cur_开头; *序列的命名规则 序列的命名 SEQ_表名_列名 如何在程序中使用序列所产生的值 INSERTINTOtest(id,nick) VALUES(seq_test_id.nextval,'test'); 如何查询序列的当前值: selectseq_test_id.currvalfromdual; *SQL编写规范SQL语句所有表名,字段名全部小写,SQL保留字大写;select *查询语句不允许出现,要明确写查询哪些列;
4、连接符or、in、and、以及=、<=、>=等前后加上一个空格SQL语句注意缩进where子句书写时,每个条件占一行,语句另起一行时,以保留字或者连接符开始,连接符右对齐多表连接时,使用表的别名来引用列二、书写优化性能建议1、避免嵌套连接。例如:A=BandB=CandC=D2、where条件中尽量减少使用常量比较,改用主机变量3、系统可能选择基于规则的优化器,所以将结果集返回数据量小的表作为驱动表(from后边最后一个表)。4、大量的排序操作影响系统性能,所以尽量减少orderby和groupby排序操作。如必须使用排序操作,请遵循如下规则:(1)排序尽量建立在有索
5、引的列上。(2)如结果集不需唯一,使用unionall代替union。5、索引的使用。(1)尽量避免对索引列进行计算。如对索引列计算较多,请提请系统管理员建立函数索引。(2)尽量注意比较值与索引列数据类型的一致性。(3)对于复合索引,SQL语句必须使用主索引列(4)索引中,尽量避免使用NULL。(5)对于索引的比较,尽量避免使用NOT=(!=)(6)查询列和排序列与索引列次序保持一致6、尽量避免相同语句由于书写格式的不同,而导致多次语法分析。7、尽量使用共享的SQL语句。8、查询的WHERE过滤原则,应使过滤记录数最多的条件放在最前面。9、任何对列的操作都将导致表扫描
6、,它包括数据库函数、计算表达式等等,查询时要尽可能将操作移至等号右边。10、in、or子句常会使用工作表,使索引失效;如果不产生大量重复值,可以考虑把子句拆开;拆开的子句中应该包含索引。11、慎用游标,在某些必须使用游标的场合,可考虑将符合条件的数据行转入临时表中,再对临时表定义游标进行操作,这样可使性能得到明显提高。三、其他经验性规则1、尽量少用嵌套查询。如必须,请用notexist代替notin子句。2、用多表连接代替EXISTS子句。3、少用DISTINCT,用EXISTS代替4、使用UNIONALL、MINUS、INTERSECT提高性能5、使用ROWID提高
7、检索速度。对SELECT得到的单行记录,需进行DELETE、UPDATE操作时,使用ROWID将会使效率大大提高。6、使用优化线索机制进行访问路径控制。7、使用cursor时,显示光标优于隐式光标四、sql示例:SELECTaa.title,aw.bid,aw.closingdate,u.nick FROMt_usersu, t_testtt t_itemaa WHEREu.id=
此文档下载收益归作者所有