Oracle数据库设计规范建议(7)
发布时间:2021-06-08
发布时间:2021-06-08
oracle 数据库 设计规范:包括字段命名规范,表命名规范
5.1.10 避免长事务(Transaction):长事务容易造成死锁,应该避免,单个事务使用的数据库和系统资源不宜超过总资源1-2%(参考值,各应用可以根据实际情况进行适量调整,这种情况不适用于数据仓库);
5.1.11 行最长不能超过80字符,同一语句不同字句之间逗号以后空格,其他分割符前空格 where子句书写时,每个条件占一行,语句令起一行时,以保留字或者连接符开始,连接符右对齐;
5.1.12 多表连接时,使用表的别名来引用列;
5.1.13 SQL中对视图的引用:在不太清楚视图用法的情况下,尽量不用。只是因为视图中有自己想要的字段就拿来用,是相当普遍和错误的用法。原因如下:
5.1.13.1 增加了不必要的数据流量,对你的实际需求,那很可能是一个非常复杂的视图,有大量你不需要的字段,并且关联了很多你实际不需要的表,对数据库资源会有过多的消耗;
5.1.13.2 增加了应用程序对视图的依赖,不必要的依赖是越少越好的。当有应用程序依赖了某个视图,不久可能其他人因为某种原因会修改此视图,原来的应用有可能会受到不同程度的影响;
5.1.14 不要在SQL语句中使用基于rule规则的hint,因为在Oracle 10g及以后版本不再支持;
5.2 SQL 性能优化建议:
5.2.1 系统可能选择基于规则的优化器,所以将结果集返回数据量小的表作为驱动表,即将结果集返回数据量小的表放在FROM后边最后一个表;
5.2.2 大量的排序操作影响系统性能,所以尽量减少order by和group by排序操作;
5.2.3 如必须使用排序操作,排序尽量建立在有索引的列上;
5.2.4 索引的使用
5.2.4.1 尽量避免对索引列进行计算。如对索引列计算较多,请提请数据库管理员建立函数索引;
5.2.4.2 尽量注意比较值与索引列数据类型的一致性(number与number比较、char与char比较),避免使用数据库的类型自动转换功能;如:SELECT * FROM category WHERE id = ‘123’; -- id’s type is number
5.2.4.3 对于复合索引,SQL语句必须使用主索引列;
5.2.4.4 索引字段中,尽量避免使用NULL值;
5.2.4.5 对于索引的比较,尽量避免使用NOT=(!=)
5.2.4.6 查询列和排序列与索引列次序保持一致 ;
5.2.5 尽量避免相同语句由于书写格式的不同,而导致多次语法分析(减少数据库的硬分析),如可使用TOAD的格式化工具对SQL语句进行格式化处理;
5.2.6 查询的WHERE过滤原则,应使过滤记录数最多的条件放在最前面;