
SQL优化
文章平均质量分 92
Flexes
1
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
index range scan,index fast full scan,index skip scan发生的条件
index range scan(索引范围扫描):1.对于unique index来说,如果where 条件后面出现了 ,between ...and...的时候,那么就可能执行index range scan,如果where条件后面是=,那么就会执行index unique scan。2.对于none unique index来说 如果where 条件后面出现了=,>,3.对于组合索转载 2013-08-11 16:55:35 · 826 阅读 · 0 评论 -
DBMS_STATS.GATHER_TABLE_STATS详解
由于Oracle的优化器是CBO,所以对象的统计数据对执行计划的生成至关重要! 作用:DBMS_STATS.GATHER_TABLE_STATS统计表,列,索引的统计信息(默认参数下是对表进行直方图信息收集,包含该表的自身-表的行数、数据块数、行长等信息;列的分析--列值的重复数、列上的空值、数据在列上的分布情况;索引的分析-索引页块的数量、索引的深度、索引聚合因子).原创 2013-09-09 21:06:36 · 1639 阅读 · 0 评论 -
减少oracle sql回表次数 提高SQL查询性能
要写出高效的SQL,那么必须必须得清楚SQL执行路径,介绍如何提高SQL性能的文章很多,这里不再赘述,本人来谈谈如何从 减少SQL回表次数 来提高查询性能,因为回表将导致扫描更多的数据块。 我们大家都知道,数据库表中数据存储都是以块为单位,称为数据块;表中每行数据都有唯一的地址标志ROWID。 举个例子: select a from test_db w转载 2013-09-08 23:47:31 · 1375 阅读 · 0 评论 -
in与exist , not in与not exist 的区别
in和exists in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询。一直以来认为exists比in效率高的说法是不准确的。 如果查询的两个表大小相当,那么用in和exists差别不大。 如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in: 例如:表A(小表),表B(大表)1:sel转载 2013-09-08 20:37:20 · 742 阅读 · 0 评论 -
INDEX FULL SCAN vs INDEX FAST FULL SCAN
http://blog.youkuaiyun.com/robinson_0612/article/details/7452310 INDEX FULL SCAN 与 INDEX FAST FULL SCAN两个长相差不多,乃是一母同胞,因此既有其共性,也有其个性。两者来说其共性是不用扫描表而是通过索引就可以直接返回所需要的所有数据。这对提高查询性能而言,无疑是一个难得的数据访问方式之一,因为索转载 2013-09-01 22:26:56 · 689 阅读 · 0 评论 -
Oracle 绑定变量窥探
Bind Peeking是Oracle 9i中引入的新特性,一直持续到Oracle 10g R2。它的作用就是在SQL语句硬分析的时候,查看一下当前SQL谓词的值,以便生成最佳的执行计划。而在oracle 9i之前的版本中,Oracle 只根据统计信息来做出执行计划。一、绑定变量窥探 使用SQL首次运行时的值来生成执行计划。后续再次运行该SQL语句则使用首次执行计划来执行。转载 2013-09-07 10:30:24 · 961 阅读 · 0 评论 -
利用Oracle在线重定义Online Redefinition清理历史数据
我在一文中介绍了Oracle在线重定义的特点及其使用步骤,Online Redefinition的适用场景很多,包括:Modify the storage parameters of a table or clusterMove a table or cluster to a different tablespaceAdd, modify, or drop one or more colu转载 2013-09-06 23:20:34 · 958 阅读 · 0 评论 -
oracle非分区表删除
以下脚本可以用于将表按照rowid范围分区,获得指定数目的rowid Extent区间(Group sets of rows in the table into smaller chunks), 以便于非分区表利用rowid来实现并行删除或更新:set verify offundefine rowid_rangesundefine segment_nameundefine owner转载 2013-09-06 23:14:25 · 850 阅读 · 0 评论 -
ORACLE 收集统计信息
今天网上看到一篇关于收集统计信息的文章,还不错,特转载下来。1. 理解什么是统计信息优化器统计信息就是一个更加详细描述数据库和数据库对象的集合,这些统计信息被用于查询优化器,让其为每条SQL语句选择最佳的执行计划。优化器统计信息包括: 表的统计信息o 行数o Block数o 行平均长度· 列的统计信息o 列中不同值的转载 2013-09-07 13:42:32 · 1253 阅读 · 0 评论 -
Oracle查询当前高CPU消耗的SQL语句
分类: Oracle Performance2013-02-21 04:17 224人阅读 评论(0) 收藏 举报ERP数据库某些时段出现CPU使用率接近100%,如何找出这些高CPU消耗的SQL语句?1,查询高CPU消耗的pid$ top2,查询该pid的ADDRSQL> select addr from v$process where spid='24764转载 2013-09-05 23:16:00 · 5846 阅读 · 0 评论 -
高水位线和全表扫描
分类: Oracle 性能优化 2011-11-08 18:15 1527人阅读 评论(2)收藏 举报 tablestatisticssqlinputdeleteoracle 高水位线好比水库中储水的水位线,用于描述数据库中段的扩展方式。高水位线对全表扫描方式有着至关重要的影响。当使用delete 操作表记录时,高水位线并不会下降,随之导致的是全表扫描的实际开销转载 2013-08-13 18:06:07 · 738 阅读 · 0 评论 -
视图合并(View Merging)
分类:Oracle SQL 调优2012-07-29 00:37 437人阅读 评论(0)收藏举报accessloopstablenestedmergejoin在使用视图或嵌套视图的查询语句中,oracle 为了取得最优的执行计划会将这些视图进行合并,将视图中的表与外部查询的表进行连接。[sql] view plaincopyprint?转载 2013-08-13 11:38:18 · 3143 阅读 · 0 评论 -
标量子查询
标量子查询ORACLE允许在select子句中包含单行子查询, 使用标量子查询可以有效的改善性能,当使用到外部连接,或者使用到了聚合函数,就可以考虑标量子查询的可能性1. 取消外部连接的使用外部连接的做法:select a.username,count(*) from all_users a,all_objects bwhere a.username=b.owne转载 2013-08-12 20:27:14 · 760 阅读 · 0 评论 -
ORACLE库表信息
SELECT * FROM USER_CONSTRAINTS WHERE table_name=upper('ORG_INFO')SELECT * FROM USER_CONSTRAINTS WHERE CONSTRAINT_NAME =upper('SYS_C0065894');alter table ORG_INFOadd foreign key (PARENT_ORG_ID)转载 2013-08-12 10:44:41 · 630 阅读 · 0 评论 -
查询oracle最耗资源的sql语句
查询oracle最耗资源的sql语句,等等1、查询当前系统中正在执行的sql:SELECT osuser, username, sql_text from v$session a, v$sqltext b where a.sql_address =b.address order by address, piece;2、查找死锁的语句:SELECT l.session_i转载 2013-08-12 10:20:26 · 2299 阅读 · 0 评论 -
Oracle 聚簇因子(Clustering factor)
转载http://blog.youkuaiyun.com/robinson_0612/article/details/8847959 聚簇因子是 Oracle 统计信息中在CBO优化器模式下用于计算cost的参数之一,决定了当前的SQL语句是否走索引,还是全表扫描以及是否作为嵌套连接外部表等。如此这般,那到底什么是聚簇因子,那些情况下会影响到聚簇因子,以及如何提高聚簇因子?本文将对此展开描述。1、转载 2013-08-05 11:27:30 · 730 阅读 · 0 评论 -
INDEX FULL SCAN 或 INDEX FAST FULL SCAN区别
INDEX FULL SCAN 与 INDEX FAST FULL SCAN两个长相差不多,乃是一母同胞,因此既有其共性,也有其个性。两者来说其共性是不用扫描表而是通过索引就可以直接返回所需要的所有数据。这对提高查询性能而言,无疑是一个难得的数据访问方式之一,因为索引中存储的数据通常是远小于原始表的数据。下面具体来看看两者之间的异同。一、何时INDEX FULL SCAN 或 INDE转载 2013-08-11 17:52:26 · 1862 阅读 · 0 评论 -
oracle中like优化的方法
在oracle中对于like操作时,如果是前后都是模糊查询的时候(类似于col01 like ‘%xxx%’)是没有办法用到索引的,这里提供一种对于这种情况的优化思路,主要的思路是把大表变小,把查询的实体表变窄,把需要的数据放到索引里.常规的写法: create table t01 as select * from dba_objects;SQL> create转载 2013-08-11 17:15:45 · 2655 阅读 · 1 评论 -
Oracle Transport Tablespace
Oracle 10g 表空间迁移Transport tablespace前需要确认(1)确认表空间是否和其他表空间有包含关系SQL>conn trans_us/trans_usSQL>create table account as select rownum id,username,created from dba_users;(table默认在TRANSPORT_TS表空间里转载 2013-09-05 21:23:17 · 1001 阅读 · 0 评论