-03-06注:对该文件内容增加、删除或修改均需填写此变更统计,具体记载变更信息,以确保其可追溯性。命名规范对象新建表,存放过程,包等要遵照以下规则对象名称前缀备注表见下表,依据功效分视图v_主键pk_索引idx_序列seq_存放过程pr_包pk_函数f_同义词s_数据库连接(dblink)dl_表表名不得超出30个字母,全部采取大写字母,表命名能够以下:模块缩写名_表名称,如RES_NODE代表资源模块节点;值班:DUTY_CALENDAR。字段名称字段名不得超出30个字母,必需以英文单词组成,每个单词之间以下划线隔开,全部采取大写字母。对复杂大型应用系统而言,必需建立表名和字段名数据字典,并附于开发规范附录中,在命名时必需严格遵守数据字典。数据库对象管理通常要求数据库全部对象,包含表、视图、主键、索引、序列、存放过程、包等必需在数据库建模工具中进行管理并保持和数据库完全同时。大小写在数据库模型、数据库脚本中,全部对象,包含表、视图、主键、索引、序列、存放过程、包等名称必需大写。语句书写规范尽可能不使用某种数据库特有功效为了保持可移植性,尽可能不使用某种数据库特有功效,如SQLServer专用UniqueID,Oracle专用Sequence功效;查询sql语句尽可能使用绑定变量尽最大可能不使用通配符在SQL语句中,LIKE关键字支持通配符匹配,但这种匹配尤其花费时间。如:SELECTAFROMABCWHEREALIKE'M%'。在A字段上建立了索引。把语句改为SELECTAFROMABCWHEREA>'M'ANDA<'N',在实施查询时会利用索引以提升响应速度。使用*通配符必需事先取得项目开发责任人同意。Distinct使用distinct会增加查询和I/O操作次数。应该避免使用distinct关键字。嵌套查询SELECTAFROMCMS_USERWHEREUSER_NAMEIN(SELECTUSER_NAMEFROMCMS_DEPARTMENTWHEREDEPARTMENT=’电子办’)假如我们用连接来替换,且表关联放在条件语句最终部。即:SELECTAFROMCMS_USER,=’电子办’=。查询嵌套层次越多,效率越低。应该尽可能避免子查询。假如子查询不可避免,那么要在子查询中过滤掉尽可能多行。排序利用索引自动以合适次序输出时,能够避免对表中数据排序,当以下情况发生时,排序就不能省略:索引中不包含一个或多个待排序列;groupby或orderby子句中列次序和索引次序不一样;排序列来自不一样表。正确地增建索引、合理地合并数据库表,能够避免无须要排序。假如排序不可避免,那么应该试图简化它,如缩小排序列范围等。UNION假如不过滤多表中反复数据,请使用UNIONALL;假如过滤多表中反复数据,请使用UNION。长语句避免使用很长、很复杂查询语句,假如有特殊需求必需书写较长SQL语句,应该把语句分解成若干部分,每一部分形成一个存放过程或函数。大表尽可能使用分区大表分区:超出1G表尽可能使用分区,分区标准和尽可能和维护该表机制结合起来。比如:保留10天数据,天天删除10天前一天数据,在删除数据时候,能够采取采取altertabletable_nametruncatepartitionpartition_name,以后altertabletable_namedroppartitionpartition_name;这里不直接使用drop原因是减小数据库开销。Truncate是在秒等级中完成。其它注意事项在条件语句中,=。表关联条件放在语句最终部。不使用轻易和系统关键字反复单词来命名,如ID,DATE等,但能够使用如NODEID,BUYDATE等能够来命名;SQL语句用大写字母(字段中内容除外);编写ddl和dml时,每个语句后面必需加上分号;对于定时增加性性能数据表,必需建立有效索引;查询语句Where语句必需落在索引上。高效sql语句Sql优化方法RBO(rule-basedoptimizer)CBO驱动表1)2张行数不一致表连接表TAB1行数:16,384行表TAB2行数:1行×SELECTCOUNT(*)FROMTAB2,TAB1;○SELECTCOUNT(*)FROMTAB1,TAB2;2)3张表连接×SELECT*FROMEMPE,LOCL, =
2021年数据库开发规范 来自淘豆网m.daumloan.com转载请标明出处.