
数据库相关
文章平均质量分 77
风继续吹DV
这个作者很懒,什么都没留下…
展开
-
ORACLE SQL性能优化系列 (三)
8. 使用DECODE函数来减少处理时间使用DECODE函数可以避免重复扫描相同记录或重复连接相同的表.例如:SELECT COUNT(*),SUM(SAL)FROM EMPWHERE DEPT_NO = 0020AND ENAME LIKE ‘SMITH%’;SELECT COUNT(*),SUM(SAL)FROM EMPWHERE DEPT_NO转载 2014-01-21 10:10:47 · 730 阅读 · 0 评论 -
CentOS 6.4上安装 Oracle 11g R2图文教程
“//”后是注释,“#”代表root用户下操作,“$”代表Oracle用户下操作。#chkconfig iptables off //永久关闭防火墙或#service iptabels stop //暂时关闭防火墙,重启系统后会自动打开 1.硬件检查:1.1 内存要求:内存大于1G(使用虚拟机安装时内存要稍微大一些,否则安装检查不通过)#ca转载 2014-05-08 17:08:29 · 1263 阅读 · 0 评论 -
sqlplus命令
1、首先查看当前使用的数据库实例: select name from V$database;2、切换两个数据库实例 在sqlplus里敲connect username/password@sid 当然,本人习惯偷懒:conn username/password@sid也未尝不可3、将显示的内容输出到指定文件 SQL> SPOO转载 2014-05-08 16:47:13 · 930 阅读 · 0 评论 -
ORACLE SQL性能优化系列 (十四) 完结篇
46. 连接多个扫描如果你对一个列和一组有限的值进行比较, 优化器可能执行多次扫描并对结果进行合并连接.举例:SELECT * FROM LODGINGWHERE MANAGER IN (‘BILL GATES’,’KEN MULLER’);优化器可能将它转换成以下形式SELECT * FROM LODGINGWHERE MANAGER = ‘BILL转载 2014-01-21 10:21:32 · 680 阅读 · 0 评论 -
ORACLE SQL性能优化系列 (十)
31. 强制索引失效如果两个或以上索引具有相同的等级,你可以强制命令ORACLE优化器使用其中的一个(通过它,检索出的记录数量少) .举例:SELECT ENAMEFROM EMPWHERE EMPNO = 7935 AND DEPTNO + 0 = 10 /*DEPTNO上的索引将失效*/AND EMP_TYPE || ‘’ = ‘A’ /*EMP转载 2014-01-21 10:18:42 · 644 阅读 · 0 评论 -
ORACLE SQL性能优化系列 (八)
25. 用索引提高效率索引是表的一个概念部分,用来提高检索数据的效率. 实际上,ORACLE使用了一个复杂的自平衡B-tree结构. 通常,通过索引查询数据比全表扫描要快. 当ORACLE找出执行查询和Update语句的最佳路径时, ORACLE优化器将使用索引. 同样在联结多个表时使用索引也可以提高效率. 另一个使用索引的好处是,它提供了主键(primary key)的唯一性验证.转载 2014-01-21 10:17:00 · 592 阅读 · 0 评论 -
ORACLE SQL性能优化系列 (五)@
17. 使用表的别名(Alias)当在SQL语句中连接多个表时, 请使用表的别名并把别名前缀于每个Column上.这样一来,就可以减少解析的时间并减少那些由Column歧义引起的语法错误.(译者注: Column歧义指的是由于SQL中不同的表具有相同的Column名,当SQL语句中出现这个Column时,SQL解析器无法判断这个Column的归属)18. 用EXISTS替代转载 2014-01-21 10:12:16 · 676 阅读 · 0 评论 -
ORACLE SQL性能优化系列 (十三)
43. 用WHERE替代ORDER BYORDER BY 子句只在两种严格的条件下使用索引.ORDER BY中所有的列必须包含在相同的索引中并保持在索引中的排列顺序.ORDER BY中所有的列必须定义为非空.WHERE子句使用的索引和ORDER BY子句中所使用的索引不能并列.例如:表DEPT包含以下列:DEPT_CODE PK NOT NULLDE转载 2014-01-21 10:20:58 · 655 阅读 · 0 评论 -
ORACLE SQL性能优化系列 (十二)
39. 总是使用索引的第一个列如果索引是建立在多个列上, 只有在它的第一个列(leading column)被where子句引用时,优化器才会选择使用该索引.译者按:这也是一条简单而重要的规则.见以下实例.SQL> create table multiindexusage ( inda number , indb number , descr varchar2(转载 2014-01-21 10:20:04 · 724 阅读 · 0 评论 -
ORACLE SQL性能优化系列 (十一)
36. 用UNION替换OR (适用于索引列)通常情况下, 用UNION替换WHERE子句中的OR将会起到较好的效果. 对索引列使用OR将造成全表扫描. 注意, 以上规则只针对多个索引列有效. 如果有column没有被索引,查询效率可能会因为你没有选择OR而降低. 在下面的例子中, LOC_ID 和REGION上都建有索引.高效:SELECT LOC_ID , LOC_DESC转载 2014-01-21 10:19:23 · 627 阅读 · 0 评论 -
ORACLE SQL性能优化系列 (九)
27. 基础表的选择基础表(Driving Table)是指被最先访问的表(通常以全表扫描的方式被访问). 根据优化器的不同, SQL语句中基础表的选择是不一样的.如果你使用的是CBO (COST BASED OPTIMIZER),优化器会检查SQL语句中的每个表的物理大小,索引的状态,然后选用花费最低的执行路径.如果你用RBO (RULE BASED OPTIMIZER) ,转载 2014-01-21 10:17:51 · 616 阅读 · 0 评论 -
ORACLE SQL性能优化系列 (六)
20. 用表连接替换EXISTS通常来说 , 采用表连接的方式比EXISTS更有效率SELECT ENAMEFROM EMP EWHERE EXISTS (SELECT ‘X’ FROM DEPTWHERE DEPT_NO = E.DEPT_NOAND DEPT_CAT = ‘A’);(更高效)SELECT ENAMEFROM DEPT D,EM转载 2014-01-21 10:13:02 · 654 阅读 · 0 评论 -
ORACLE SQL性能优化系列 (二)
ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,因此FROM子句中写在最后的表(基础表 driving table)将被最先处理. 在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表.当ORACLE处理多个表时, 会运用排序及合并的方式连接它们.首先,扫描第一个表(FROM子句中最后的那个表)并对记录进行派序,然后扫描第二个表(FROM子句中最后第二个表),最转载 2014-01-21 10:09:20 · 690 阅读 · 0 评论 -
ORACLE SQL性能优化系列 (一)
ORACLE的优化器共有3种:a. RULE (基于规则) b. COST (基于成本) c. CHOOSE (选择性)设置缺省的优化器,可以通过对init.ora文件中OPTIMIZER_MODE参数的各种声明,如RULE,COST,CHOOSE,ALL_ROWS,FIRST_ROWS . 你当然也在SQL句级或是会话(session)级对其进行覆盖.为了使用基于成本的优化器(C转载 2014-01-21 10:08:17 · 779 阅读 · 0 评论 -
ORACLE SQL性能优化系列 (七)
24. 用EXPLAIN PLAN 分析SQL语句EXPLAIN PLAN 是一个很好的分析SQL语句的工具,它甚至可以在不执行SQL的情况下分析语句. 通过分析,我们就可以知道ORACLE是怎么样连接表,使用什么方式扫描表(索引扫描或全表扫描)以及使用到的索引名称.你需要按照从里到外,从上到下的次序解读分析的结果. EXPLAIN PLAN分析的结果是用缩进的格式排列的, 最内部的操转载 2014-01-21 10:16:02 · 648 阅读 · 0 评论 -
ORACLE SQL性能优化系列 (四)
13. 计算记录条数和一般的观点相反, count(*) 比count(1)稍快 , 当然如果可以通过索引检索,对索引列的计数仍旧是最快的. 例如 COUNT(EMPNO)(译者按:通过实际的测试,上述三种方法并没有显著的性能差别)14. 用Where子句替换HAVING子句避免使用HAVING子句, HAVING 只会在检索出所有记录之后才对结果集进行过滤.转载 2014-01-21 10:11:45 · 629 阅读 · 0 评论 -
Linux Oracle服务启动&停止脚本与开机自启动
在CentOS 6.3下安装完Oracle 10g R2,重开机之后,你会发现Oracle没有自行启动,这是正常的,因为在Linux下安装Oracle的确不会自行启动,必须要自行设定相关参数,首先先介绍一般而言如何启动oracle。一、在Linux下启动Oracle登录到CentOS,切换到oracle用户权限# su – oracle接着输入:$ sqlp转载 2014-05-08 17:20:29 · 672 阅读 · 0 评论