【oracle 】如何估算即将创建的索引大小

SQL> startup
ORACLE 例程已经启动。
Total System Global Area  426852352 bytes                                      
Fixed Size                  1333648 bytes                                      
Variable Size             260048496 bytes                                      
Database Buffers          159383552 bytes                                      
Redo Buffers                6086656 bytes                                      
数据库装载完毕。
数据库已经打开。
SQL> drop table t;
表已删除。
SQL> create table t as select object_id id ,object_name from dba_objects;
表已创建。
SQL> set serveroutput on
SQL> declare
  2  l_index_ddl varchar2(1000);
  3  l_used_bytes number;
  4  l_allocated_bytes number;
  5  begin
  6  dbms_space.create_index_cost (
  7  ddl =>'create index idx_t on t(id) ', --执行的ddl
  8  used_bytes => l_used_bytes,
  9  alloc_bytes => l_allocated_bytes );
 10  dbms_output.put_line ('used= ' || l_used_bytes || 'bytes'
 11  || '  allocated= ' || l_allocated_bytes || 'bytes');
 12  end;
 13  /
used= 345098bytes  allocated= 720896bytes                                      
PL/SQL 过程已成功完成。
说明:  used_bytes  给出索引数据实际表现的字节数。
         allocated 是当实际创建索引时在表空间中实际占用的字节数。

时间: 2024-09-19 04:57:31

【oracle 】如何估算即将创建的索引大小的相关文章

Oracle如何预估将要创建的索引和表的大小

Oracle如何预估将要创建的索引和表的大小 1. 对于表和索引空间的预估,可以使用DBMS_SPACE包的CREATE_TABLE_COST和CREATE_INDEX_COST存储过程,虽然没有看这两个存储过程的实现,但猜测平均行长算法,会根据预计行数,做一些计算,字段定义算法,则会根据每个字段的长度,和预计行数,做一些计算,其实和我们手工根据这些算法,计算的方式类似,只是封装起来,便于调用. 2. CREATE_TABLE_COST根据列字段定义预估,是比较准确的,根据平均行长,并不很准确.

oracle中估算表In-Memory需要内存大小

对于12.1.0.2的In-Memory特性很多朋友都已经知晓,现在可能有这个困惑我一张表启用In-Memory大概需要多少内存呢?该如何估算这个值呢?这里我告诉你通过dbms_compression可以完成你想做的事情 启用In-Memory功能 [oracle@www.111cn.net u02]$ sqlplus / as sysdba SQL*Plus: Release 12.1.0.2.0 Production on Thu Aug 7 17:50:47 2014 Copyright

Oracle分区(2) 分区索引

可能很多初学者和我一样,一开始以为只要在分区表上创建的索引就是分区索引,其实不然,索引 是否分区和表是否分区没有必然的关系,表分区索引可以分区也可以不分区,甚至表不分区索引也可 以分区(但很少会这么定义),因此分区索引比分区表要复杂的多. 分区索引主要分为本地分区索引和全局分区索引,本地索引又分为前缀索引和非前缀索引,本文主 要探讨它们的区别. 本地分区索引 本地分区索引是指索引的分区键.分区方式和基表的分区方式一模一样,如下图所示: 本地分区索引具有如下基本特征: 1. 本地索引一定是分区索引

Oracle中唯一约束和唯一索引的区别

在使用TOAD来操作Oracle数据库时,会注意到创建约束时有Primary Key.Check.Unique和Foreign Key四种类型的约束,这与SQL Server中的约束没有什么区别,这里的Check约束除了用于一般的Check约束外,在Oracle中也用于非空约束的实现.也就是说如果一个字段不允许为空,则系统将会创建一个系统的Check约束,该约束定了某字段不能为空. 除了约束,还有另外一个概念是索引,在TOAD中创建索引的界面如下: 我们可以注意到在唯一性组中有三个选项:不唯一.

ORACLE中关于外键缺少索引的探讨和总结

    在ORACLE数据库中,定义外键约束时,ORACLE是不会自动创建对应索引的,必须手动在外键约束相关的列上创建索引.那么外键字段上是否有必要创建索引呢?如果有必要的话,巡检时,如何找出外键字段上没有创建索引的相关表,并生成对应的索引的脚本呢?   外键缺失索引影响   外键列上缺少索引会带来三个问题,限制并发性.影响性能.还有可能造成死锁.所以对于绝大部分场景,我们应该尽量考虑在外键上面创建索引   1. 影响性能. 如果子表外键没有创建索引,那么当父表查询关联子表时,子表将进行全表扫描

[20151008]索引组织表上创建BITMAP索引.txt

[20151008]索引组织表上创建BITMAP索引.txt --IOT 是一种特殊的索引结构,使用它能够解决特定场合的应用问题,但是在许多应用中很少使用,更多的是使用堆表. --我偏向使用静态以及"只读"的小表. --以前写过一个系列,一直没有很好理解在IOT表上建立位图索引,最近再研究看看; --我当时不理解为什么mapping table与iot表对应的块为什么不一致? 1.建立测试环境: SCOTT@test> @ver1 PORT_STRING             

LOB字段相关概念(自动创建LOB索引段和重建索引方法)

LOBs,或Large Objects字段,是Oracle中用于处理存储非字符数据推荐的一种字段类型,例如mp3,video,图片,和long字符串数据.二进制大对象,或BLOBs,字符大对象,或CLOBs,能够存储TB的数据. LOB列有许多相关的属性,每个LOB列属性可以使用"LOB (lobcolname) STORE AS ..."这种语法来描述. 一个包含LOBs字段类型的表(CLOB,NCLOB和BLOB)会为每个LOB列创建两个额外的磁盘段segment,LOBINDEX

oracle自增列创建方法收藏

  oracle自增列创建方法收藏 Oracle没有自增字段这样的功能,但是通过触发器(trigger)和序列(sequence)可以实现. 先建一个测试表了: create table userlogin ( id number(6) not null, name varchar2(30) not null primary key ) tablespace users / 第一步:创建SEQUENCE create sequence userlogin_seq increment by 1 s

解决Windows 7系统取消创建的索引方法

解决Windows 7系统取消创建的索引方法: 1.点击开始-搜索框输入"索引",在上方出现的提示中选择索引选项; 2.选择索引选项以后弹出菜单,选择"修改"; 3.把里面各项建立索引的勾去掉, 确定即可.