易截截图软件、单文件、免安装、纯绿色、仅160KB

ORACLE的表分析策略


对表进行分析,通常情况下可以对表,索引,列进行单独分析,或者进行组合分析,但这三者哪些是相对重要的,哪些分析显得不那么重要?通过本篇文章的实验相信大家也会对直方图有更一步的了解.
1.首先创建测试表,并插入100000条数据
SQL> create table test(id number,nick varchar2(30));
Table created.
SQL> begin
  2      for i in 1..100000 loop
  3            insert into test(id) values(i);
  4      end loop;
  5      commit;
  6  end;
  7  /
PL/SQL procedure successfully completed.
更新nick字段,使数据发生严重倾斜
SQL> update test set nick='abc' where rownum<99999; 
99998 rows updated.
SQL> commit;
Commit complete.
SQL> create index idx_test_nick on test(nick);
Index created.
SQL> update test set nick='def' where nick is null;
2 rows updated.
SQL> commit;
Commit complete.
--只对索引进行分析
SQL> analyze index idx_test_nick compute statistics;
Index analyzed.
SQL> select index_name,LEAF_BLOCKS,DISTINCT_KEYS,NUM_ROWS from user_indexes where index_name='IDX_TEST_NICK';
INDEX_NAME                     LEAF_BLOCKS DISTINCT_KEYS   NUM_ROWS
------------------------------ ----------- ------------- ----------
IDX_TEST_NICK                          210             2     100000
SQL> select COLUMN_NAME,NUM_BUCKETS,num_distinct from USER_tab_columns where table_name='TEST';
COLUMN_NAME                    NUM_BUCKETS NUM_DISTINCT
------------------------------


相关文档:

ORACLE SQL优化

ORACLE SQL优化
(1) 选择最有效率的表名顺序(只在基于规则的优化器中有效):
ORACLE 的解析器按照从右到左的顺序处理from 子句中的表名,from 子句中写在最后的表
(基础表driving table)将被最先处理,在from 子句中包含多个表的情况下,你必须选择记
录条数最少的表作为基础表。如果有3个以上的表连接查询, 那就需 ......

ORACLE PL/SQL

一、什么是PL/SQL?
    PL/SQL(Procedural Language/SQL)是对SQL的扩充,它吸收了近年来编程语言的许多最高设计特点:如数据封装性、信息隐蔽性、重载和例外处理等。它允许SQL的数据操纵语言和查询语句包含在块结构(block_structured)和代码过程语言中,使PL/SQL成为一个功能强大的事务处理语言。
 &nbs ......

oracle常用语句

1.查询表空间的使用情况,以M为单位
select f.tablespace_name,a.total,u.used,f.free,round((u.used/a.total)*100) "% used",  
round((f.free/a.total)*100) "% Free"   
from  
(select tablespace_name, sum(bytes/(1024*1024)) total   
  &nbs ......

Oracle中INSTR,SUBSTR方法

INSTR方法的格式为
INSTR(源字符串, 目标字符串, 起始位置, 匹配序号)
例如:INSTR('CORPORATE FLOOR','OR', 3, 2)中,源字符串为'CORPORATE FLOOR', 目标字符串为'OR',起始位置为3,取第2个匹配项的位置。
默认查找顺序为从左到右。当起始位置为负数的时候,从右边开始查找。
所以SELECT INSTR('CORPORATE FLOOR' ......

删除表空间中的数据文件(Oracle 10gR2以后support)

SQL> alter tablespace myalan
  2  add datafile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\IRMDB\myspace02.dbf' size 10m;
表空间已更改。
SQL> select file_name from dba_data_files where tablespace_name='MYALAN';
FILE_NAME
-------------------------------------------------------------------- ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号