ORACLE-conception
文章平均质量分 79
black_snail
这个作者很懒,什么都没留下…
展开
-
ORACLE SQL性能优化系列 (五)
17. 使用表的别名(Alias)当在SQL语句中连接多个表时, 请使用表的别名并把别名前缀于每个Column上.这样一来,就可以减少解析的时间并减少那些由Column歧义引起的语法错误. (译者注: Column歧义指的是由于SQL中不同的表具有相同的Column名,当SQL语句中出现这个Column时,SQL解析器无法判断这个Column的归属) 18.原创 2003-07-29 08:17:00 · 1344 阅读 · 0 评论 -
ORACLE SQL性能优化系列 (十三)
43. 用WHERE替代ORDER BYORDER BY 子句只在两种严格的条件下使用索引. ORDER BY中所有的列必须包含在相同的索引中并保持在索引中的排列顺序.ORDER BY中所有的列必须定义为非空. WHERE子句使用的索引和ORDER BY子句中所使用的索引不能并列. 例如: 表DEPT包含以下列: D原创 2003-09-03 22:43:00 · 1627 阅读 · 0 评论 -
从不sequential的sequence
遇到过好多问题关于如何在ORACLE 中创建类似SQLSERVER或ACCESS中自增长字段。答案多是先建立一个Sequence,然后在Trigger中将Sequence的NEXTVAL的取值赋予所需要的列。看上去还不错。 但是一切真的那么顺利吗?Sequence 真的可以做到提供一序列连续没有遗漏的序列数值吗? 不妨作个实验原创 2003-12-02 22:02:00 · 1182 阅读 · 0 评论 -
AUTONOMOUS TRANSACTION(自治事务)的介绍
在基于低版本的ORACLE做一些项目的过程中,有时会遇到一些头疼的问题.,比如想在执行当前一个由多个DML组成的transaction(事务)时,为每一步DML记录一些信息到跟踪表中,由于事务的原子性,这些跟踪信息的提交将决定于主事务的commit或rollback. 这样一来写程序的难度就增大了, 程序员不得不把这些跟踪信息记录到类似数组的结构中,然后在主事务结束后把它们存入跟踪表.原创 2003-07-22 10:19:00 · 1079 阅读 · 0 评论 -
ORACLE SQL性能优化系列 (四)
13. 计算记录条数 和一般的观点相反, count(*) 比count(1)稍快 , 当然如果可以通过索引检索,对索引列的计数仍旧是最快的. 例如 COUNT(EMPNO) (译者按: 在CSDN论坛中,曾经对此有过相当热烈的讨论, 作者的观点并不十分准确,通过实际的测试,上述三种方法并没有显著的性能差别) 14. 用Where子句替换H原创 2003-07-24 14:03:00 · 1182 阅读 · 0 评论 -
ORACLE SQL性能优化系列 (八)
25. 用索引提高效率 索引是表的一个概念部分,用来提高检索数据的效率. 实际上,ORACLE使用了一个复杂的自平衡B-tree结构. 通常,通过索引查询数据比全表扫描要快. 当ORACLE找出执行查询和Update语句的最佳路径时, ORACLE优化器将使用索引. 同样在联结多个表时使用索引也可以提高效率. 另一个使用索引的好处是,它提供了主键(primary key)的唯一原创 2003-08-12 22:13:00 · 1349 阅读 · 0 评论 -
ORACLE SQL性能优化系列 (十)
31. 强制索引失效 如果两个或以上索引具有相同的等级,你可以强制命令ORACLE优化器使用其中的一个(通过它,检索出的记录数量少) . 举例: SELECT ENAMEFROM EMPWHERE EMPNO = 7935 AND DEPTNO + 0 = 10 /*DEPTNO上的索引将失效*/AND EMP_TYPE |原创 2003-08-29 07:40:00 · 1333 阅读 · 0 评论 -
ORACLE 面试问题-技术篇(1)
这也许是你一直期待的文章,在关注这部分技术问题的同时,请务必阅读有关面试中有关个人的问题和解答(这部分将在下几期中出现)。这里的回答并不是十分全面,这些问题可以通过多个角度来进行解释,也许你不必在面试过程中给出完全详尽的答案,只需要通过你的解答使面试考官了解你对ORACLE概念的熟悉程度。 1. 解释冷备份和热备份的不同点以及各自的优点 解答:热备份针对归档模式的数据原创 2004-01-05 12:03:00 · 1406 阅读 · 0 评论 -
ORACLE 面试问题-技术篇(2)
ORACLE 面试问题-技术篇(2)21. 如何判断数据库的时区?解答:SELECT DBTIMEZONE FROM DUAL;22. 解释GLOBAL_NAMES设为TRUE的用途解答:GLOBAL_NAMES指明联接数据库的方式。如果这个参数设置为TRUE,在建立数据库链接时就必须用相同的名字连结远程数据库23。如何加密PL/SQL程序?解答:WRAP原创 2004-02-01 23:09:00 · 1594 阅读 · 0 评论 -
ORACLE SQL性能优化系列 (十二)
39. 总是使用索引的第一个列如果索引是建立在多个列上, 只有在它的第一个列(leading column)被where子句引用时,优化器才会选择使用该索引. 译者按:这也是一条简单而重要的规则. 见以下实例. SQL> create table multiindexusage ( inda number , indb number , descr varch原创 2003-09-03 10:34:00 · 1388 阅读 · 0 评论 -
ORACLE SQL性能优化系列 (九)
27. 基础表的选择 基础表(Driving Table)是指被最先访问的表(通常以全表扫描的方式被访问). 根据优化器的不同, SQL语句中基础表的选择是不一样的.如果你使用的是CBO (COST BASED OPTIMIZER),优化器会检查SQL语句中的每个表的物理大小,索引的状态,然后选用花费最低的执行路径.如果你用RBO (RULE BASED OPTIMIZ原创 2003-08-20 10:42:00 · 1326 阅读 · 0 评论 -
ORACLE SQL性能优化系列 (十四) 完结篇
46. 连接多个扫描如果你对一个列和一组有限的值进行比较, 优化器可能执行多次扫描并对结果进行合并连接.举例: SELECT * FROM LODGING WHERE MANAGER IN (‘BILL GATES’,’KEN MULLER’); 优化器可能将它转换成以下形式 SELECT * FROM LO原创 2003-09-05 08:51:00 · 1552 阅读 · 0 评论 -
神秘的DUAL
DUAL ? 有什么神秘的? 当你想得到ORACLE系统时间, 简简单单敲一行SQL不就得了吗? 故弄玄虚….SQL> select sysdate from dual;SYSDATE---------28-SEP-03 哈哈, 确实DUAL的使用很方便. 但是大家知道DUAL倒底是什么OBJECT, 它有什么特殊的行为吗? 来,我们一起看一看. 首先搞清楚DU原创 2003-11-01 22:57:00 · 1707 阅读 · 2 评论 -
ORACLE SQL性能优化系列 (二)
4. 选择最有效率的表名顺序(只在基于规则的优化器中有效)ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,因此FROM子句中写在最后的表(基础表 driving table)将被最先处理. 在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表.当ORACLE处理多个表时, 会运用排序及合并的方式连接它们.首先,扫描第一个表(FROM子句中最后的那个表)并对记原创 2003-07-22 23:21:00 · 1342 阅读 · 0 评论 -
ORACLE SQL性能优化系列 (六)
20. 用表连接替换EXISTS 通常来说 , 采用表连接的方式比EXISTS更有效率 SELECT ENAME FROM EMP E WHERE EXISTS (SELECT ‘X’ FROM DEPT WHERE DEPT_NO原创 2003-08-01 19:00:00 · 1124 阅读 · 0 评论 -
ORACLE SQL性能优化系列 (十一)
36. 用UNION替换OR (适用于索引列)通常情况下, 用UNION替换WHERE子句中的OR将会起到较好的效果. 对索引列使用OR将造成全表扫描. 注意, 以上规则只针对多个索引列有效. 如果有column没有被索引, 查询效率可能会因为你没有选择OR而降低. 在下面的例子中, LOC_ID 和REGION上都建有索引.高效: SELECT LOC_ID原创 2003-09-02 23:22:00 · 1226 阅读 · 0 评论 -
ORACLE SQL性能优化系列 (一)
1. 选用适合的ORACLE优化器 ORACLE的优化器共有3种: a. RULE (基于规则) b. COST (基于成本) c. CHOOSE (选择性) 设置缺省的优化器,可以通过对init.ora文件中OPTIMIZER_MODE参数的各种声明,如RULE,COST,CHOOSE,ALL_ROWS,FIRST_ROWS . 你当然也在SQL原创 2003-07-21 18:34:00 · 2527 阅读 · 0 评论 -
ORACLE SQL性能优化系列 (三)
8. 使用DECODE函数来减少处理时间 使用DECODE函数可以避免重复扫描相同记录或重复连接相同的表. 例如: SELECT COUNT(*),SUM(SAL) FROM EMP WHERE DEPT_NO = 0020 AND ENAME LIKE ‘SMITH%’; SELECT COUNT(*),SUM(SA原创 2003-07-22 23:19:00 · 1280 阅读 · 0 评论 -
ORACLE SQL性能优化系列 (七)
24. 用EXPLAIN PLAN 分析SQL语句 EXPLAIN PLAN 是一个很好的分析SQL语句的工具,它甚至可以在不执行SQL的情况下分析语句. 通过分析,我们就可以知道ORACLE是怎么样连接表,使用什么方式扫描表(索引扫描或全表扫描)以及使用到的索引名称.你需要按照从里到外,从上到下的次序解读分析的结果. EXPLAIN PLAN分析的结果是用缩进的格式排列的原创 2003-08-01 19:03:00 · 1162 阅读 · 0 评论 -
先排序还是先取值
先排序还是先取值 题目: MS SQLSERVER和ORACLE中取出表中按照某字段排序的前N条记录 这个题目看上去似乎那么简单,两种数据库都提供ORDER BY子句. 问题应该能够迎刃而解吧. 先试一下MS SQLSERVER是怎么做的: use Northwind;create table TestSort (ID integer原创 2003-10-02 01:19:00 · 1426 阅读 · 0 评论