`
bianxq
  • 浏览: 94584 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论
文章列表
查询中何为驱动表阿??请问这句话怎么理解啊? 楼主goldtogo(jinhao)2002-12-06 09:36:27 在 Oracle / 基础和管理 提问 3.1   SQL语句的优化       SQL语句的执行速度,可以受很多因素的影响而变化。但主要的影响因素是:驱动表、 ...
     http://www.itpub.net/viewthread.php?tid=144375&extra=&page=1  SQL语句的执行速度,可以受很多因素的影响而变化。但主要的影响因素是:驱动表、执行操作的先后顺序和索引的运用。可以由很多不同的方法间接地改变这些因素,以达到最优的执行速度。这里主要探讨当对多个表进行连接查询时应遵循的优化原则:  (1)   用于连接的子句的列应被索引、在Where子句中应尽量利用索引,而不是避开索引。  (2)   连接操作应从返回较少行上驱动。 (3)   如果所连接的表A和B,A表长度远远大于B表,建议从较大的A ...
在 Oracle 10g 中,以前熟悉的一些参数已经 deprecated 了,有的时候很烦人。 SQL> STARTUP; ORA-32004: obsolete and/or deprecated parameter(s) specified ORACLE instance started. Total System Global Area 213909504 bytes Fixed Size 778156 bytes Variable Size 128983124 bytes Database B ...
引子:以前一直没太关注oracle并行这个特性。前几天一个兄弟碰到的一个问题,才让我觉得这个东西还是有很多需要注意的地方,有必要仔细熟悉下。其实碰到的问题不复杂: 类似如下的一条语句:insert into xxxx select /*+parallel(a) ...
在一个单独的服务器中安装更多的CPU成为目前的一个趋势。使用对称多处理服务器(SMP)的情况下,一个Oracle服务器拥有8个、16个或32个CPU以及几吉比特RAM的SGA都不足为奇。     Oracle跟上了硬件发展的步伐,提供了很多面向多CPU的功能。从Oracle8i开始,Oracle在每个数据库函数中都实现了并行性,包括SQL访问(全表检索)、并行数据操作和并行恢复。对于Oracle专业版的挑战是为用户的数据库配置尽可能多的CPU。     在Oracle环境中实现并行性最好的方法之一是使用Oracle并行查询(OPQ)。我将讨论OPQ是如何工作的和怎样用它来提升大的全表检索的响应 ...
CTAS是通过查询,然后根据查询的结果来建立表格的一种方式。显然通过这种方式可以省去定义表结构的方法,而且在创建表的同时导入数据。不过在使用这个方法的时候,仍然有些内容需要引起数据库管理员的注意。(SQL Server ...
大家都在讨论关于数据库优化方面的东东,刚好参与开发了一个数据仓库方面的项目,以下的一点东西算是数据库优化方面的学习+实战的一些心得体会了,拿出来大家共享。欢迎批评指正阿! SQL语句: 是对数据库(数据)进行操 ...
                oracle中关于in和exists,not in 和 not exists in和exists     in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询。 not exists:做NL,对子查询先查,有个虚表,有确定值,所以就算子查询有NULL最终也有值返回 not in:做hash,对子查询表建立内存数组,用外表匹配,那子查询要是有NULL那外表没的匹配最终无值返回。    一直以来认为exists比in效率高的说法是不准确的。   如果查询的两个表大小相当,那么用in和exists差 ...
通常对于小表,Oracle建议通过全表扫描进行数据访问,对于大表则应该通过索引以加快数据查询,当然如果查询要求返回表中大部分或者全部数据,那么全表扫描可能仍然是最好的选择。从V$SYSSTAT视图中,我们可以查询得到关于全表扫描的系统统计信息: SQL> col name for a30 SQL> select name,value from v$sysstat2 where name in ('table scans (short tables)','table scans (long tables)'); NAME VALUE---------------------- ...
oracle 提供一个reverse函数,可以实现将一个对象反向转换. 比如: SQL> select reverse('123456') from dual;REVERSE('123456')-----------------654321   由于这个函数,是针对数据库内部存储的对象编码进行反转的, 因此,在比如:数字,中文等.因为实现存储的并不是直接编码后的结果,而是经过某种内部转换后实现的,因此,在转换完成后,并不一定是自己想要的结果.示例: SQL> select reverse(123456) ,reverse('中华人民共和国') from dual;REVE ...
1. 用UNION替换OR (适用于索引列)   通常情况下, 用UNION替换WHERE子句中的OR将会起到较好的效果。 对索引列使用OR将造成全表扫描。注意, 以上规则只针对多个索引列有效。 如果有column没有被索引, 查询效率可能会因为你没 ...
Oracle sql 性能优化调整   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 命令,以增加 ...
1)索引唯一扫描 如果查询时是通过unique或primary key约束来保证只返回一条数据,那么优化器就会选择索引唯一扫描,这是访问一条数据的最快方式。 2)索引范围扫描 索引键非唯一,当遇到如下条件时会使用索引范围扫描: 1.col=:b1 2.col<:b1 3.col>:b1 3)索引降序范围扫描 与2)中的情况相同,只不过2)默认是按照升序进行查找的,而这里是按降序进行查找,如: select line_item_id,order_id from order_items where order_id<:b1 order by order_id des ...
   较典型的问题有:有时,表明明建有索引,但查询过程显然没有用到相关的索引,导致查询过程耗时漫长,占用资源巨大,问题到底出在哪儿呢?按照以下顺序查找,基本上能发现原因所在。查找原因的步骤首先,我们要确定数据库运行在何种优化模式下,相应的参数是: optimizer_mode 。可在 svrmgrl 中运行“ show parameter optimizer_mode" 来查看。 ORACLE V7 以来缺省的设置应是 "choose" ,即如果对已分析的表查询的话选择 CBO ,否则选择 RBO 。如果该参数设为“ rule ”,则不论表是否分析过,一概选用 RB ...
  SQL> desc test; Name        Null?    Type ----------------------------------------- -------- ---------------------------- OBJECT_NAME         VARCHAR2(128) OBJECT_ID         NUMBER ===================================== SQL> select count(*) from test; Execution Plan------------------------ ...
Global site tag (gtag.js) - Google Analytics