Oracle 索引index那些事,基于函数的索引会有timestamp,当进行基于时间点的恢复的时候,如果timestamp比系统的恢复时间点新,可能
表修改很少,可以多创建索引,特别是read only的表
表修改很多,需要着重考虑
15%的数据以下筛选适合创建索引
索引不包含null,所以对条件为is Not null是合适创建索引的,优不优良另说
最大尺寸的index应该在表的一半以下
可以使用并行创建index,加快建索引的速度
创建索引可以使用nologging --提速的好主意,再结合parallel,但是生成归档量没有测试,大家可以测试一下啊
unusable indexes
--优化器不会考虑,dml也不会维护这些索引,适合大批量数据加载的时候,加载完成后在将索引开启
当将索引置为unusable时,index segment会被删除
skip_unusable_indexes参数决定了dml是否维护被置为unusable的index
invisible indexes
这个索引也会被optimizer忽略,但是dml语句会维护这个索引,单个的分区索引是不能置为invisible模式的。
使用场景:
1 测试删除一个索引产生的影响
2 创建临时索引为一定的操作而不影响现有的程序
3 在已经拥有索引的列上创建其他索引 --可能是新特性,一个索引上可以创建多个索引
understand when to create multiple indexes on the same set of columns -p745
可以在多个列上创建不同类型的索引,但同一时刻只能一条索引是visible的,其他索引必须是invisible的。
--分区索引可以在普通表上创建,这个是优化的一个好思路,不能光看准分区表 ****
重建和coalesce索引
很明显coalesce功能少,影响小
coalesce会将相同height的leaf block进行合并,所以不单纯是回收不使用的叶块,但不会缩减index 的height
创建特别大索引的时候应该单独创建一个temporary tablespace,创建索引肯定会涉及到排序操作的,当然把session的sort_area_size调大一些也有好处。
create index idx_aa on aa(id) online; --指定online不能使用parallel,不能存在ddl操作,但允许基表上进行dml操作。
基于函数的索引会有timestamp,当进行基于时间点的恢复的时候,如果timestamp比系统的恢复时间点新,可能这个索引就失效了,可以使用analyze
index ... validate sructure语句进行确认,没有实验进行支撑,观点略显苍白。
creating a key-compressed index
--会使用前缀后缀值进行压缩,,适合非唯一值比较多的引导列情况
--节省空间,提高性能
压缩索引适合非唯一的列的情况,也是前缀和后缀进行压缩
create index hr.emp_ename on emp(ename) tablespace users compress 1;
alter index hr.emp_ename rebuild nocompress;
unuseable index -- -所谓创建即不可用,不分配segment
create index id_a on a (id unusable);
invisible index --同上,但分配段,dml操作也会被数据库维护(不用这些索引的时候还是少创建为宜),可以在session级别使用optimizer_use_invisible_indexes为true使用索引
--上面两个索引都会被优化器忽略
create index emp_id on emp(id) invisible;
unusable 索引被优化器忽略,并且在基表进行dml操作时不会得到维护
alter index id1 rename to id2;
alter index id1 monitoring usage;
alter index id1 nomonitoring usage;
dba_ind_expressions --可以查看基于函数的索引的表达式
alter index ... validate structure; --之后可以查询index_stats获得关于index的状态。
user_object_usage; --获得index是否在使用。
相关阅读:
Oracle收集统计信息导致索引被监控
由Oracle索引来理解ArcSDE索引
Oracle索引技术之如何建立最佳索引
Oracle索引列NULL值引发执行计划该表的测试示例
Oracle索引 主键影响查询速度
Oracle索引扫描
朝湓教育网还为您提供以下相关内容希望对您有帮助:
index里要加order的条件吗
在Oracle数据库中,INDEX本身不需要也不包含ORDER BY条件,但索引的结构和查询字段的匹配程度会直接影响是否需要显式排序操作。1. 索引与排序的关联机制Oracle的索引(如主键索引PK_DAIMIN或二级索引)本质是数据存储的有序结构,其排序规则由索引定义决定。当查询的ORDER BY字段与索引键列顺序完全一致时,优化器可能直
oracle索引的建立与使用
Oracle索引是一种与表相关的数据库对象,它会创建一个由表列和行指针组成的结构。当对表进行查询时,Oracle可以使用索引快速定位到需要的数据行,从而提高查询效率。建立索引时,可使用CREATE INDEX语句。比如创建单列索引:CREATE INDEX index_name ON table_name(column_name); 这里的index_name是索引名...
oracle索引的建立与使用
Oracle索引的建立主要包括创建单列索引、创建组合索引、创建唯一索引和创建位图索引,使用索引则可以快速存取数据,改善数据库性能。建立索引:创建单列索引:在表的单个列上创建索引,使用CREATE INDEX语句,后跟索引名和表名(列名)。例如,对employees表的emp_name列创建索引,语句为CREATE INDEX idx_emp_...
oracle 添加索引
Oracle中添加索引的方法主要如下:使用CREATE INDEX语句:基本语法:CREATE INDEX index_name ON table_name ;说明:index_name是索引的名称,table_name是要创建索引的表名,column1, column2等是要创建索引的列名。ASC表示升序,DESC表示降序。创建唯一索引:语法:CREATE UNIQUE INDEX index_name ON tabl...
oracle数据库术语
以下是常见的Oracle数据库术语:SGA/PGA:SGA即共享内存,PGA是进程内存。可根据工作负载调整SGA和PGA大小以减少I/O,SGA优化可调整共享池和缓冲区缓存大小,PGA优化可针对排序、哈希操作调整PGA_AGGREGATE_TARGET。索引(Index):用于提高查询效率。可通过日志分析慢查询,为频繁过滤的字段创建索引,如“...
Oracle如何判断索引是否失效
在Oracle数据库中,可以通过以下方法判断索引是否失效:使用PL/SQL工具:打开PL/SQL,输入账号密码,登录需要判断索引状态的数据库。打开SQL窗口。输入SQL语句:select status from user_indexes where index_name='索引名称';如果返回结果为VALID,则表示索引有效。检查索引状态:索引状态为VALID表示索引有效。
oracle 空间索引权限
Oracle中空间索引的权限配置主要涉及系统权限和对象权限。系统权限:CREATE INDEX:创建索引(包括可能的空间索引)通常需要具有CREATE INDEX系统权限。数据库管理员(DBA)可以使用GRANT语句来分配此权限给用户或角色。例如,GRANT CREATE INDEX TO 用户名。对象权限:访问或使用索引:虽然创建索引需要系统权限,...
oracle数据库索引种类,分别什么情况下使用
Oracle数据库中最常见的索引类型是b-tree索引,也就是B-树索引,以其同名的计算科学结构命名。CREATE INDEX语句时,默认就是在创建b-tree索引。没有特别规定可用于任何情况。2.位图索引(bitmap index)位图索引特定于该列只有几个枚举值的情况,比如性别字段,标示字段比如只有0和1的情况。3.基于函数的...
Oracle索引的索引使用原则
在正确使用索引的前提下,索引可以提高检索相应的表的速度。当用户考虑在表中使用索引时,应遵循下列一些基本原则。(1)在表中插入数据后创建索引。在表中插入数据后,创建索引效率将更高。如果在装载数据之前创建索引,那么插入每行时oracle都必须更改索引。(2)索引正确的表和列。如果经常检索包含大量...
index是什么文件
index文件是一种索引文件,用于存储数据的索引信息,方便用户快速检索和访问所需数据。以下是关于index文件的详细解答:一、定义 index文件是一种专门用于存储数据索引信息的文件。这些索引信息包括数据的位置、大小、类型等,以便于系统或用户能够快速定位并访问所需数据。二、作用 提高数据检索效率:通过index...