
BI
jenya007
my name is jenya,wellcome to everyone
展开
-
BI
BI转载 2015-12-31 18:40:28 · 659 阅读 · 0 评论 -
建议7.3 - 建议7.4
建议7.3:谨用或尽量不要使用in/exists、not in/not exists方式,而应该使用直接连接方式替换。--直接外连接方式写法:select count(*) from t_tablename1 a, t_tablename2 b where a.column1 = b.column1(+) and b.column1 is null;--直原创 2015-03-23 19:08:23 · 415 阅读 · 0 评论 -
建议7.2:在OLTP系统中一定要注意使用绑定变量。(2)
说明1. OLTP系统的特点是同一个SQL语句的执行频繁度高,因此,减少分析时间和减少消耗在分析上的资源是非常重要的。不使用绑定变量会引起下面的问题:Ø 严重降低系统的并发能力。不绑定变量会造成过多的硬分析,过多的硬分析会导致共享池的栓锁争用,而过多的栓锁争用会严重降低系统的并发能力。Ø 容易引起ORA-04031错误。数据仓库系统的特点是同一SQL语句的执行频繁度原创 2015-03-23 19:06:31 · 505 阅读 · 0 评论 -
建议7.2:在OLTP系统中一定要注意使用绑定变量。
declare type tcur_ref is ref cursor; cur_obj tcur_ref; i_l_start number default dbms_utility.get_time; str_l_dummy all_objects.object_name%type;beg原创 2015-03-23 19:05:18 · 387 阅读 · 0 评论 -
建议7.1:恰当控制事务大小,commit不要过于频繁。
说明1. 要根据具体业务合理控制事务的大小,在需要提交时才提交事务,不要无目的减小事务;2. 事务过小,频繁commit会带来以下影响:Ø 程序性能降低,执行时间长,因为需要花费大量时间来等待log file sync事件;Ø 产生的总的redo、undo数量变大;Ø 系统总的栓锁数量变大,造成并发能力减弱;Ø 由于已commit的undo信原创 2015-03-23 19:02:11 · 2005 阅读 · 0 评论 -
建议 5.16 - 建议 5.18
建议 5.16:查询条件相同时,同一表的数据要一次提取完毕,不允许分多条语句提取。select column1, column2, column3 into str_l_column1, str_l_column2, str_l_column3 from t_tablename where column4 = value;建议 5.17:尽量不要使用子函数,子函数不便阅读原创 2015-03-23 18:58:45 · 401 阅读 · 0 评论 -
规则 5.7 -规则 5.10
规则 5.7:当程序有多个分支返回时,要确保各个分支都结束了事务。但是,禁止在没有事务的代码中,随意使用rollback、commit。create or replace procedure p_procedurename ( cur_returnset out pkg_service.resultset --返回结果集) asbegin open原创 2015-03-23 18:55:13 · 372 阅读 · 0 评论 -
规则 5.4 - 规则 5.6
规则 5.4:在程序中要使用%type进行变量定义,以保持和表中字段类型的一致。declare str_l_variable1 t_tablename.column1%type; …begin select column1 into str_l_variable1 from t_tablename where c原创 2015-03-23 18:52:25 · 345 阅读 · 0 评论 -
建议8.19 - 建议8.20
建议8.19:要区分近期记录和历史记录,不能把所有记录放都放到一个表中,要有历史表,要有定期删除历史表记录的功能。建议8.20:对数据库中的记录要求不能丢失的应用要使用数据库归档方式和rman备份,对数据要求不高的应用可以使用export/imp逻辑备份。原创 2015-03-23 19:34:09 · 391 阅读 · 0 评论 -
建议8.8:表的设计要尽量满足第二范式(2NF),基于提升性能的考虑可以适当增加冗余而不必满足第三范式(3NF)。(3)
【第三范式 3NF】定义:在满足1NF和2NF的基础上,所有非主键字段对任何主键字段都不存在传递依赖。解释:例如,(学号,学生姓名,系号,系名,系地址)组成一个表,主键为(学号),由于主键是单个字段,因此没有部分依赖的问题,肯定满足2NF。但是,在应用中使用该表时可能存在以下问题:Ø 存在大量的冗余,有关学生所在的几个字段(系号,系名,系地址)将会重复重复存储。存在以上问题的原创 2015-03-23 19:31:34 · 975 阅读 · 0 评论 -
建议7.22 - 建议7.23
建议7.22:删除分区表数据时,建议考虑使用truncate进行整分区的删除。建议7.23:对于大批量数据的删除,要考虑使用特殊方式处理,不要使用delete方式。&说明 delete不会释放高水位(HWM),一来造成空间的浪费,二来会导致效率的下降,另外delete方式删除大批量数据的效率也是极差的。可以考虑使用truncate、create table as等方法。原创 2015-03-23 19:24:48 · 448 阅读 · 0 评论 -
建议7.16 - 建议7.17
建议7.16:在where条件中对字段使用函数,会导致用不上索引,可以考虑建立函数索引。&说明在Oracle9i中想让Oracle自动使用函数索引,必须使用CBO优化器,因此就需要对表进行“分析”。但是,如果优化器模式为CHOOSE,在没有分析的情况下可以通过“提示”来强制使用函数索引。建议7.17:在业务逻辑允许的情况下,尽量使用union all来代替union。--如果上下两原创 2015-03-23 19:18:18 · 348 阅读 · 0 评论 -
规则 6.1 - 建议 6.3
规则 6.1:数据库脚本在配制库上要有独立的目录来存放,不能和其他程序文件混合存放。规则 6.2:数据库脚本文件的扩展名要统一,例如:“.sql”或“.orasql”等。建议 6.3:每个数据库存储过程、函数要在配制库上存储为独立的脚本,尽量不要在一个脚本中存放多个函数,以免一个人修改文件造成其他人等待;在脚本转测试、发布时可以通过专用的合包工具进行合并、打包。原创 2015-03-23 19:01:15 · 345 阅读 · 0 评论 -
规则 5.11 -规则 5.15
规则 5.11:能不用提示(HINTS)尽量不要使用,如果必须使用提示来提高语句的性能,要注意提示的正确写法,“*”与“+”之间不能有空格,如果SQL语句使用了表的别名,提示也必须使用表的别名而不是表名。select /*+ use_nl(a b) leading(a) */ a.column1, a.column2, b.column1, b.column2 from t_ta原创 2015-03-23 18:56:42 · 394 阅读 · 0 评论 -
建议7.8 - 建议7.9
建议7.8:在执行频度高,又含有排序操作的SQL语句中,建议使用索引来避免排序操作。&说明排序是一种昂贵的操作,在一秒钟执行成千上万次的SQL语句中如果带有排序动作,往往会消耗大量的系统资源、性能低下。索引是一种有序结构,如果order by后面的字段上建有索引,那么Oracle通常会直接使用索引而避免排序。建议7.9:在删除(delete)、插入(insert)、更新(update)原创 2015-03-23 19:13:35 · 295 阅读 · 0 评论 -
建议7.10 - 建议7.11
建议7.10:在删除(delete)、插入(insert)、更新(update)操作频繁,而数据又来源于序列的字段上建议尽量不要建立索引。&说明例如,表T的C1字段是一个序列值,对T的delete操作十分频繁,而且每次插入、更新C1字段的值都来源于一个序列,插入、更新的值和删除的值永远都不可能重复。如果,在C1字段上建立一个索引,这将导致该索引越来越大、效率越来越低,该索引的空间很难被重用原创 2015-03-23 19:14:19 · 311 阅读 · 0 评论 -
9.3 常用反义词组汇总表
词组 词组说明beginend开始 -- 结束startfinish启动 -- 完成firstlast第一个 -- 最后一个priornext前一个 -- 后一个原创 2015-03-23 19:41:41 · 466 阅读 · 0 评论 -
S -
S标准 standard std序列 sequence seq流水号 serialNumber sn状态 state state服务 services serv工作场所 site site员工 staff staff服务器 server srv资源 source原创 2015-03-23 19:41:10 · 436 阅读 · 0 评论 -
K -
K L标签 label lbl长度 length len 列表 list lst 库 library lib级别/层次 level lvl位置 location lctM经理 manager mgr消息 message msg移动 mo原创 2015-03-23 19:40:28 · 568 阅读 · 0 评论 -
D -
D删除 delete del文档 document doc优惠 discount disct定义 defination def数据 data data描述 description desc设备 device dev部门 department dpt预存 depo原创 2015-03-23 19:39:29 · 758 阅读 · 0 评论 -
9.2 常用缩写汇总表
名称 英文全称 英文缩写A平均 average avg代理商 agent agent属性 attribute attr账号 account acct帐户 accounts accts经办人 actor actor受理 apply apply权限 authorit原创 2015-03-23 19:38:53 · 2210 阅读 · 0 评论 -
建议8.9 - 建议8.18
建议8.9:不建议表中存储过多的null值,要考虑使用not null约束。或者,可以考虑字符串使用NA,数值型用0作为缺省值。建议8.10:系统中不应有过多的触发器,过多的触发器会增加维护的难度。建议8.11:尽量不要使用复杂视图。&说明简单视图:数据来自单个表,且无分组(DISTINCT/GROUP BY)、无函数;复杂视图:数据来自多个表,或有分组,有函数。复杂视图不原创 2015-03-23 19:32:20 · 367 阅读 · 0 评论 -
建议8.8:表的设计要尽量满足第二范式(2NF),基于提升性能的考虑可以适当增加冗余而不必满足第三范式(3NF)。(2)
【第二范式 2NF】 定义:在满足1NF的基础上,每一个非主键字段必须完全依赖于主键。只有在复合字段作主键时,才可能出现不满足2NF的情况。解释:例如,(学号,课程号,学分,成绩)组成一个表,主键为(学号,课程号)。在应用中使用该表时可能存在以下问题:Ø 数据冗余:假设同一门课由40个学生选修,学分字段就重复40次;Ø 更新异常:若调整了某课程的学分,学分字段的值原创 2015-03-23 19:29:45 · 777 阅读 · 0 评论 -
建议8.8:表的设计要尽量满足第二范式(2NF),基于提升性能的考虑可以适当增加冗余而不必满足第三范式(3NF)。
说明【第一范式 1NF】定义:表中每一条记录的每个一个字段值,都是不可再分的最小数据单位。解释:例如,(工号,姓名,电话号码)组成一个表,由于一个人可能有办公电话和家庭电话,因此该表不符合1NF,规范成为1NF有三种方法:Ø 重复存储工号和姓名,主键只能是电话号码;Ø 工号为主键,把电话号码分解为“单位电话”和“住宅电话”两个属性;Ø 工号为主键,但强制每原创 2015-03-23 19:28:33 · 1013 阅读 · 0 评论 -
规则8.1 - 规则8.7
规则8.1:任何表的设计都要考虑到数据的删除策略,表中的数据不能无止境的增长而不删除。规则8.2:严禁将业务数据放在系统表空间(system)中,必须有独立的表空间存放业务数据。规则8.3:索引数据和表数据要分开存储,放在不同的表空间中。规则8.4:在不同业务系统共用同一个数据库时,要注意不同业务系统的对象必须存放在不同的用户下面,绝不能混放在同一用户下。规则8.5:严禁使用sys原创 2015-03-23 19:25:27 · 436 阅读 · 0 评论 -
建议7.19 - 建议7.21
建议7.19:用case语句合并多次表扫描select count ( case when column1 count ( case when column1 between 1000 and 5000 then 1 else null end), count ( case when column1 > 5000 then 1 else null end)原创 2015-03-23 19:23:45 · 379 阅读 · 0 评论 -
建议7.18
建议7.18:如果SQL语句针对同一个字段做多个选择(or)条件,建议考虑使用no_expand提示来避免串联(concatenation)操作。select /*+ no_expand */ column1, column2 from t_tablename where column3 = value1 or column3 = value2 or column原创 2015-03-23 19:19:25 · 381 阅读 · 0 评论 -
建议7.14 - 建议7.15
建议7.14:尽量不要在较长字符串的字段上建立索引,如char(1000)、varchar2(1000)等。&说明 这会导致索引非常庞大,索引高度过高,效率很低。建议7.15:不要在语句的where条件中对字段进行数学表达式运算。不建议的写法:select column1, column2 from t_tablenamewhere column1原创 2015-03-23 19:16:57 · 310 阅读 · 0 评论 -
建议7.12 - 建议7.13
建议7.12:在建立复合索引时,尽量把最常用的字段放在最前面,尽量把离散值较少的字段往前放,同时还要尽量保证复合索引中至少有一个字段具有非空约束。&说明例如,要在C1和C2两个字段上建立复合索引,如果C1字段使用更频繁一些,那么复合索引的顺序应该是(C1,C2),把最常用字段作为复合索引的第一个字段,可以使Oracle更容易用上该索引。如果C1字段只有(1,2,3)三个离散值,C2字段具有原创 2015-03-23 19:15:23 · 398 阅读 · 0 评论 -
规则 5.1 - 规则 5.3
规则 5.1:用varchar2代替varchar类型。规则 5.2:在任何时候都要避免隐式数据类型转换。--t_tablename表的phonenumber字段为varchar2类型select column1 into i_l_variable1 from t_tablename where phonenumber = '13512345678'; 规则 5原创 2015-03-23 18:52:22 · 346 阅读 · 0 评论 -
规则 4.9:对语句、程序块、分支结构的注释应放在其上方,对变量、字段、接口参数的注释应放在其右面,应避免将注释放在下面。
--对该语句的注释select column1 into i_l_variable from t_tablename where column2 = value;原创 2015-03-20 16:19:15 · 480 阅读 · 0 评论 -
规则 4.11:注释与其上面的代码应用空行隔开。
--注释1select column1 into i_l_variable from t_tablename1 where column2 = value;--注释2select column1 into i_l_variable from t_tablename2 where column2 = value;原创 2015-03-20 16:22:37 · 672 阅读 · 0 评论 -
规则 2.16: insert语句要列出具体字段名,严禁使用insert into tablename values ( … )方式,应使用insert into tablename ( … ) va
insert into t_tablename ( column1, --注释 column2, --注释 column3, --注释 column4 --注释 ) values ( value1, value2,原创 2015-03-20 15:42:03 · 1944 阅读 · 1 评论 -
规则 2.15:select语句要列出具体字段名,严禁使用select * 方式。
select column1, column2, column3 into str_l_column1, str_l_column2, str_l_column3 from t_tablename where column4 = value;原创 2015-03-20 15:37:25 · 1362 阅读 · 0 评论 -
规则 2.14:存储过程、函数中的in 、out参数应按其类别分开书写,不允许交叉。
create or replace procedure f_functionname( str_putinparam1 in t_tablename1.column1%type, --注释 str_putinparam2 in t_tablename1.column1%type, --注释 str_putinparam3 in t_tablename2.co原创 2015-03-20 15:36:27 · 621 阅读 · 0 评论 -
规则 2.13:不同类型的操作符混合使用时,使用括号进行隔离。
declarebegin if (('abc' || 'bcd') = 'abcbcd') then a = 1; end if;end;原创 2015-03-20 15:34:12 · 416 阅读 · 0 评论 -
规则 2.11:存储过程、函数的变量定义部分,类型关键字要左对齐;变量后的注释也要左对齐。
create or replace function f_functionname() return XXX is str_l_name varchar2(20); --注释 i_l_var number; --注释 dt_l_time date; --注释begin end f_functionname;原创 2015-03-20 15:27:51 · 660 阅读 · 0 评论 -
规则 2.10:create、begin、end、exception独立成行,顶格书写不缩进,但是作为程序块嵌套在程序中时仍然需要缩进4格。
create or replace function f_functionname() return XXX isbeginexception when others thenend f_functionname;原创 2015-03-20 15:25:05 · 636 阅读 · 0 评论 -
规则 2.9:过长的表达式应在低优先级操作符处换行书写,操作符放在新行之首,划出的新行要左对齐,不同运算符混合使用时要加以括号标识优先级。
declarebegin i_l_variable := (a * b * c * d) + (e * f) + (h – i - j) + k - ((l + m) / n);end;原创 2015-03-20 15:23:40 · 1232 阅读 · 0 评论 -
规则 2.7:不允许把多个语句写在一行中,即一行只写一条语句。
declarebegin -- 初始化局部变量 i_l_variable1 := 1; i_l_variable2 := i_variable1; i_l_variable3 := i_l_variable1 + i_l_variable2; -- 判断开始时间 if (dt_l_begindate > sysdate) then原创 2015-03-20 15:19:58 · 8251 阅读 · 0 评论