量,对你的实际需求,那很可能是一个非常复杂的视图,有大量你不需要的字段,并且关联了很多你实际不需要的表,对数据库资源会有过多的消耗;
51132增加了应用程序对视图的依赖,不必要的依赖是越少越好的。当有应用程序依赖了某个视图,不久可能其他人因为某种原因会修改此视图,原来的应用有可能会受到不同程度的影响;
5114不要在SQL语句中使用基于rule规则的hi
t,因为在Oracle10g及以后版本不再支持;
52SQL性能优化建议:521系统可能选择基于规则的优化器,所以将结果集返回数据量小的表作为驱动表,即将结果集返回数据量小的表放在FROM后边最后一个表;
522大量的排序操作影响系统性能,所以尽量减少orderby和groupby排序操作;
523如必须使用排序操作,排序尽量建立在有索引的列上;
524索引的使用
5241尽量避免对索引列进行计算。如对索引列计算较多,请提请数据库管理员建立函数索引;
5242尽量注意比较值与索引列数据类型的一致性
umber与
umber比较、char与char比较,避免使用数据库的类型自动转换功能;如:SELECTFROMcategoryWHEREid‘123’id’stypeis
umber
5243对于复合索引,SQL语句必须使用主索引列;
f5244索引字段中,尽量避免使用NULL值;
5245对于索引的比较,尽量避免使用NOT()
5246查询列和排序列与索引列次序保持一致;
525尽量避免相同语句由于书写格式的不同,而导致多次语法分析减少数据库的硬分析,如可使用TOAD的格式化工具对SQL语句进行格式化处理
526查询的WHERE过滤原则,应使过滤记录数最多的条件放在最前面;
527在WHERE中,数据库函数、计算表达式等等,要尽可能将放在等号右边。否则会使所比较的字段上的索引失效;如:SELECT*FROMservice_promotio
WHERETO_CHARgmt_modified’yyyymmdd’‘200010901’
而应使用:SELECTFROMservice_promotio
WHEREgmt_modifiedTO_DATE‘2001901’’yyyymmdd’ANDgmt_modifiedTO_DATE‘2001902’’yyyymmdd’
528i
、or子句常会使索引失效,尽可能不使用i
、or;
529尽量避免在循环中使用SQL语句;
5210在循环中尽量使用动态SQL语句提高执行性能;
6其他与性能有关的设计原则
前面与提高数据库访问的性能相关的内容,这里就不再重复了,下面提出一些与数据库性能极为相关,但上文又未涉及的条目:
61大数据量的开发环境开发过程中,开发人员往往使用一个非常简单的、只有很少数据的数据库环境,便于程序的调试。但是,最好还提供一个数据量与真实环境相当的环境,数据量和应
f用的设计目标差不多,供开发人r