oracle-sql优化篇
文章平均质量分 76
ONLYONE_HTLIU
这个作者很懒,什么都没留下…
展开
-
like优化
SQL> create table test as select * from dba_objects;表已创建。SQL> select owner,object_name from test where owner like ROBINSON%;OWNER OBJECT_转载 2010-03-24 17:03:00 · 719 阅读 · 0 评论 -
绑定变量速度实验
<br />SQL> create table m(x int);<br />SQL> create or replace procedure proc1<br /> 2 as<br /> 3 begin<br /> 4 for i in 1..10000<br /> 5 loop<br /> 6 execute immediate<br /> 7 'insert into m values(:x)'using i;<br /> 8 end loop;<br /> 9 en原创 2010-08-06 17:46:00 · 779 阅读 · 0 评论 -
分区表、分区索引和全局索引部分总结
<br />在一个表的数据超过过2000万条或占用2G空间时,建议建立分区表。<br /><br />create table ta(c1 int,c2 varchar2(16),c3 varchar2(64),c4 int constraint pk_ta primary key (c1)) partition by range(c1)(partition p1 values less than (10000000),partition p2 values less than (20000000),par原创 2010-06-01 10:32:00 · 731 阅读 · 0 评论 -
Oracle表分区学习笔记
Oracle表分区学习笔记<br /><br />Oracle表分区<br />自从oracle8i 开始可以把一个表分割为多个小的部分,这样可以对oracle的性能优化带来很大的好处~<br />例如:改善表的查询性能,更加容易管理表数据,备份和恢复操作更方便<br />在oracle 中分区表 分为好几种的(范围分区,散列分区,子分区,列表分区,索引分区)下面我们来慢慢介绍<br />现在我们来建立一个[范围分区]<br /><br /><br />create table range_test (ra原创 2010-06-01 10:31:00 · 609 阅读 · 0 评论 -
分区表分区字段的update操作
<br />默认情况下,oracle的分区表对于分区字段是不允许进行update操作的,如果有对分区字段行进update,就会报错——ORA-14402: 更新分区关键字列将导致分区的更改。但是可以通过打开表的row movement属性来允许对分区字段的update操作。<br /><br />例:创建分区表test_part进行实验<br /><br />create table TEST_PART<br />(<br /> A1 NUMBERnot null,<br /> A2 DATE原创 2010-06-01 10:24:00 · 9907 阅读 · 0 评论 -
分区表与分区索引(二):范围分区表的数据管理
--0.重建分区表<br />SQL> drop table testrp; 表已丢弃。 SQL> create table testrp(a number(10), b varchar2(10))<br /> 2 partition by range(a)(<br /> 3 partition testrp1 values less than (51),<br /> 4 partition testrp2 values less than (81)<br /> 5 )<br /> 6原创 2010-06-01 10:22:00 · 826 阅读 · 0 评论 -
分区表
分区表分区表是将大表的数据分成称为分区的许多小的子集,9i提供四种分区方法:范围分区,列表分区,哈希分区和混合分区;<br />· 范围分区是根椐分区键的不同取值范围来划分子集的,关键字RANGE, VALUES LESS THAN;<br />· 列表分区是根椐分区键的一些离散的取值来划分子集的,关键字LIST, VALUES;<br />· 哈希分区是应用哈希算法将分区键对应到某个子集中去,关键字HASH, PARTITIONS;<br />· 混合分区只能有两层,第一层是范围分区,第二层可以是列表分区原创 2010-06-01 10:23:00 · 628 阅读 · 0 评论 -
Oracle 分区表(Partition)
<br />看示例库的时候,发现有一些表的DDL不仅有Column部分,还有很多Partition部分,不理解什么意思。于是搜索了一下,发现原来是Oracle的一个Feature。 以下是参考资料:(可以结合示例库中的SH下的一些表学习)<br />Oracle提供了分区技术以支持VLDB(Very Large DataBase)。分区表通过对分区列的判断,把分区列不同的记录,放到不同的分区中。分区完全对应用透明。 <br /><br />Oracle的分区表可以包括多个分区,每个分区都是一个独立的段(SE原创 2010-06-01 10:28:00 · 763 阅读 · 0 评论 -
组合分区表的创建及其表空间的存储位置
oracle只支持两种组合分区表:range-list和range-hash组合分区表。我们测试一下创建方法,以及组合分区表中的 表、分区、子分区 的表空间如何存储:--1.创建range-hash组合分区表testrhp1<br />SQL> create table testrhp1( a number(5), b varchar2(10) )<br /> 2 partition by range(a)<br /> 3 subpartition by hash(b) subpartitions原创 2010-06-01 10:26:00 · 1343 阅读 · 0 评论 -
分区表与分区索引(一):范围分区表的操作
--0.版本及环境<br /><br />SQL> conn / as sysdba<br />已连接。<br /><br />SQL> create tablespace tp_p1 datafile 'd:/oracle/oradata/test/tp_p1.dbf' size 10m <br /> 2 autoextend on next 1m maxsize 100m <br /> 3 extent management local <br /> 4 segment space mana原创 2010-06-01 10:19:00 · 2444 阅读 · 1 评论 -
oracle数据库巡检优化-快速定位数据库瓶颈
<br />--数据库巡检或性能优化方法各异,但首要的是要发现数据库性能瓶颈,系统自带的statspack,或awr太耗时,<br />--以下是本人常用的方法,共享之<br />--1、查询数据库等待事件top10,关注前前几个等待事件,关注前三个等待事件是否有因果或关联关系<br />--oracle 9i<br />select t2.event,round(100*t2.time_waited/(t1.w1+t3.cpu),2) event_wait_percent from (<br />SEL转载 2010-07-26 14:38:00 · 1696 阅读 · 0 评论 -
oracle索引组织表-----介绍
<br />索引组织表(IOT)不仅可以存储数据,还可以存储为表建立的索引。索引组织表的数据是根据主键排序后的顺序进行排列的,这样就提高了访问的速度。但是这是由牺牲插入和更新性能为代价的(每次写入和更新后都要重新进行重新排序)。 索引组织表的创建格式如下:<br /> createtableindexTable(<br /> IDvarchar2(10),<br /> NAMEvarchar2(20),<br /> constraintpk_id primaryk原创 2010-06-01 09:56:00 · 731 阅读 · 0 评论 -
oracle索引组织表-----介绍
<br />索引组织表(IOT)不仅可以存储数据,还可以存储为表建立的索引。索引组织表的数据是根据主键排序后的顺序进行排列的,这样就提高了访问的速度。但是这是由牺牲插入和更新性能为代价的(每次写入和更新后都要重新进行重新排序)。 索引组织表的创建格式如下:<br /> createtableindexTable(<br /> IDvarchar2(10),<br /> NAMEvarchar2(20),<br /> constraintpk_id primaryk原创 2010-06-01 09:55:00 · 425 阅读 · 0 评论 -
oracle索引组织表-----介绍
<br />索引组织表(IOT)不仅可以存储数据,还可以存储为表建立的索引。索引组织表的数据是根据主键排序后的顺序进行排列的,这样就提高了访问的速度。但是这是由牺牲插入和更新性能为代价的(每次写入和更新后都要重新进行重新排序)。 索引组织表的创建格式如下:<br /> createtableindexTable(<br /> IDvarchar2(10),<br /> NAMEvarchar2(20),<br /> constraintpk_id primaryk原创 2010-06-01 09:55:00 · 505 阅读 · 0 评论 -
oracle索引组织表----索引组织表性能测试
<br />根据asktom上的例子,自己就索引组织表做了一些试验。<br />下面分别就索引组织表和普通表的一些性能对比做一些试验,创建两张表,一个为普通的表,另外一个为索引组织表:<br />C:>sqlplus<br />SQL*Plus: Release 9.2.0.1.0 - Production on 星期四 5月 19 11:09:06 2005<br />Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.<b原创 2010-06-01 09:49:00 · 1109 阅读 · 1 评论 -
收集统计信息
1. 理解什么是统计信息优化器统计信息就是一个更加详细描述数据库和数据库对象的集合,这些统计信息被用于查询优化器,让其为每条SQL语句选择最佳的执行计划。优化器统计信息包括:· 表的统计信息o 行数o Block数o 行平均长度· 列的统计信息o 列中不同值的数量o 列中null的数量o 数据分布(转载 2010-04-17 14:40:00 · 966 阅读 · 0 评论 -
琢磨不透的cbo
第1章 表信息-- Create tablecreate table WFWIPARTICIPANT( WIPARTICID NUMBER not null, WORKITEMID NUMBER, PARTICIPANTTYPE VARCHAR2(20), PARTICIPANT VARCHAR2(256), PARTICIP原创 2010-04-17 14:11:00 · 736 阅读 · 0 评论 -
like优化2
表中将近有1100万数据,很多时候,我们要执行 字符串匹配,在SQL语句中,我们通常运用 like来达到我们搜索的目标。但经过实际测试发觉,like的效率与instr函数差别相当大。下面是一些测试结果: SQL> set timing on SQL> select count(*) from t where instr(title,’手册’)>0; COUNT(*) ———原创 2010-03-24 17:06:00 · 502 阅读 · 0 评论 -
批量重建索引
<br />set serveroutput on size 50000;<br />/*--<br />1、存储过程使用了dba视图,所以执行行时必须用sys账户进去执行exec tsioms.rebuildindex;<br />2、排除了带有大字段表索引情况<br />3、排除 “UNUSA“,”VALID“,已经索引高度和高水位情况<br />--*/<br />CREATE OR REPLACE PROCEDURE TSIOMS."REBUILDINDEX"<br />is<br原创 2010-11-15 16:24:00 · 1602 阅读 · 0 评论