posted @ 2008-12-02 00:16 徐正柱- 阅读(408) 评论(0) 推荐(0)
摘要:
9. 整合简单,无关联的数据库访问 如果你有几个简单的数据库查询语句,你可以把它们整合到一个查询中(即使它们之间没有关系) 例如: SELECT NAME FROM EMP WHERE EMP_NO = 1234;SELECT NAME FROM DPT WHERE DPT_NO = 10 ;SELECT NAME FROM CAT WHERE CAT_TYPE = ‘RD’; 上面的3个查询可以被合并成一个: SELECT E.NAME , D.NAME , C.NAME FROM CAT C , DPT D , EMP E,DUAL X WHERE NVL(‘X’,X.DUMMY) = . 阅读全文
摘要:
7. 减少访问数据库的次数 当执行每条SQL语句时, ORACLE在内部执行了许多工作: 解析SQL语句, 估算索引的利用率, 绑定变量 , 读数据块等等. 由此可见, 减少访问数据库的次数 , 就能实际上减少ORACLE的工作量. 例如, 以下有三种方法可以检索出雇员号等于0342或0291的职员. 方法1 (最低效) SELECT EMP_NAME , SALARY , GRADE FROM EMP WHERE EMP_NO = 342; SELECT EMP_NAME , SALARY , GRADE FROM EMP WHERE EMP_NO = 291;方法2 (次低效... 阅读全文
posted @ 2008-12-02 00:15 徐正柱- 阅读(405) 评论(0) 推荐(0)
摘要:
13. 计算记录条数 和一般的观点相反, count(*) 比count(1)稍快 , 当然如果可以通过索引检索,对索引列的计数仍旧是最快的. 例如 COUNT(EMPNO)(译者按: 在CSDN论坛中,曾经对此有过相当热烈的讨论, 作者的观点并不十分准确,通过实际的测试,上述三种方法并没有显著的性能差别)14. 用Where子句替换HAVING子句 避免使用HAVING子句, HAVING 只会在检索出所有记录之后才对结果集进行过滤. 这个处理需要排序,总计等操作. 如果能通过WHERE子句限制记录的数目,那就能减少这方面的开销.例如: 低效: SELECT REGION,AVG(LOG_S 阅读全文
posted @ 2008-12-02 00:13 徐正柱- 阅读(461) 评论(0) 推荐(1)
摘要:
8. 使用DECODE函数来减少处理时间使用DECODE函数可以避免重复扫描相同记录或重复连接相同的表.例如: SELECT COUNT(*),SUM(SAL) FROM EMP WHERE DEPT_NO = 0020 AND ENAME LIKE ‘SMITH%’; SELECT COUNT(*),SUM(SAL) FROM EMP WHERE DEPT_NO = 0030 AND ENAME LIKE ‘SMITH%’;你可以用DECODE函数高效地得到相同结果SELECT COUNT(DECODE(DEPT_NO,0020,’X’,NULL)) D0020_COUNT, COUNT(D 阅读全文
posted @ 2008-12-02 00:11 徐正柱- 阅读(382) 评论(0) 推荐(0)
摘要:
4. 选择最有效率的表名顺序(只在基于规则的优化器中有效)ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,因此FROM子句中写在最后的表(基础表 driving table)将被最先处理. 在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表.当ORACLE处理多个表时, 会运用排序及合并的方式连接它们.首先,扫描第一个表(FROM子句中最后的那个表)并对记录进行派序,然后扫描第二个表(FROM子句中最后第二个表),最后将所有从第二个表中检索出的记录与第一个表中合适记录进行合并.例如: 表 TAB1 16,384 条记录 表 TAB2 1 条记录 选择TAB 阅读全文
posted @ 2008-12-02 00:10 徐正柱- 阅读(436) 评论(0) 推荐(0)
摘要:
1. 选用适合的ORACLE优化器 ORACLE的优化器共有3种: a. RULE (基于规则) b. COST (基于成本)c. CHOOSE (选择性) 设置缺省的优化器,可以通过对init.ora文件中OPTIMIZER_MODE参数的各种声明,如RULE,COST,CHOOSE,ALL_ROWS,FIRST_ROWS . 你当然也在SQL句级或是会话(session)级对其进行覆盖. 为了使用基于成本的优化器(CBO, Cost-Based Optimizer) , 你必须经常运行analyze 命令,以增加数据库中的对象统计信息(object statistics)的准确性. 如果数 阅读全文
posted @ 2008-12-02 00:07 徐正柱- 阅读(549) 评论(0) 推荐(0)
摘要:
查询计划及主要统计数据如下: 执行计划: ----------------------------------------- …… 2 1 HASH JOIN (Cost=5 Card=14 Bytes=224) 3 2 TABLE ACCESS (FULL) OF 'DEPT' (Cost=2 Card=4 Bytes=52) 4 2 TABLE ACCESS (FULL) OF 'EMP' (Cost=2 Card=14 Bytes=42) 主要统计数据: ----------------------------------------- 305 recur 阅读全文
posted @ 2008-12-01 23:56 徐正柱- 阅读(446) 评论(0) 推荐(0)
摘要:
Oracle性能优化方法(SQL篇) 1 综述ORACLEl l I/Ol l l l 2 如何分析SQL语句 /ORACLE_HOME/rdbms/admin/utlxplan.sqlSQL>plan_tableSQL create table PLAN_TABLE ( statement_id varchar2(30), timestamp date, remarks varchar2(80), operation varchar2(30), options varchar2(30), object_node varchar2(128), object_owner varchar2( 阅读全文
posted @ 2008-12-01 23:55 徐正柱- 阅读(675) 评论(0) 推荐(0)
摘要:
oracle物化视图 物化视图对于前台数据库使用者来说如同一个实际的表,具有和一般表相通的如select等操作,而其实际上是一个视图,一个由系统实现定期刷新其数据的视图(具体刷新时间在定义物化视图的时候已有定义),使用物化视图更可以实现视图的所有功能,而物化视图确不是在使用时才读取,大大提高了读取速度,特别适用抽取大数据量表某些信息以及数据链连接表使用.具体语法如下:物化视图对于前台数据库使用者来说如同一个实际的表,具有和表相通的一般select操作,而其实际上是一个视图,一个定期刷新数据的视图(具体刷新时间在定义物化视图的时候已有定义),使用物化视图可以实现视图的所有功能,而物化视图确不是. 阅读全文
posted @ 2008-12-01 23:48 徐正柱- 阅读(364) 评论(0) 推荐(0)
摘要:
实现目的:往oracle数据库中,插入excel文件中的数据实现步骤:1、打开MicroSoft Excel 20002、文件(F)→新建(N)→工作簿→3、输入数据后,存盘为test.xls,4、文件(F)→另存为(A)→保存类型为:制表符分隔,起名为text.txt,保存到C:5、须先创建表结构:连入SQL*Plus,以system/manager用户登录,SQL> conn system/manager创建表结构SQL> create table test ( id number, --序号 username varchar2(10),... 阅读全文
posted @ 2008-12-01 23:29 徐正柱- 阅读(342) 评论(0) 推荐(0)
浙公网安备 33010602011771号