如何删除oracle索引 oracle删除索引,重新添加有什么影响吗?

oracle删除某个表的索引的sql语句删除掉table_name中如何删除oracle索引的索引index_name的SQL语句如下如何删除oracle索引:
DROP INDEX index_name ON talbe_name
Oracle数据库中的索引详解一 ROWID如何删除oracle索引的概念
存储如何删除oracle索引了row在数据文件中如何删除oracle索引的具 *** 置 位编码的数据 A Z a z和 /
row在数据块中的存储方式
SELECT ROWID last_name FROM hr employees WHERE department_id = ;
比如 OOOOOOFFFBBBBBBRRR
OOOOOO data object number 对应dba_objects data_object_id
FFF file# 对应v$datafile file#
BBBBBB block#
RRR row#
Dbms_rowid包
SELECT dbms_rowid rowid_block_number( AAAGFqAABAAAIWEAAA ) from dual;
具体到特定的物理文件
二 索引的概念
类似书的目录结构
Oracle 的 索引 对象 与表关联的可选对象 提高SQL查询语句的速度
索引直接指向包含所查询值的行的位置 减少磁盘I/O
与所索引的表是相互独立的物理结构
Oracle 自动使用并维护索引 插入 删除 更新表后 自动更新索引
语法 CREATE INDEX index ON table (column[ column] );
B tree结构(非bitmap)
[一]如何删除oracle索引了解索引的工作原理
表 emp
目标 查询Frank的工资salary
建立索引 create index emp_name_idx on emp(name);
[试验]测试索引的作用
运行/rdbms/admin/utlxplan 脚本
建立测试表
create table t as select * from dba_objects;
insert into t select * from t;
create table indextable
as select rownum id owner object_name subobject_name
object_id data_object_id object_type created
from t;
set autotrace trace explain
set timing on
分析表 可以得到cost
查询 object_name= DBA_INDEXES
在object_name列上建立索引
再查询
[思考]索引的代价
插入 更新
三 唯一索引
何时创建 当某列任意两行的值都不相同
当建立Primary Key(主键)或者Unique constraint(唯一约束)时 唯一索引将被自动建立
语法 CREATE UNIQUE INDEX index ON table (column);
演示
四 组合索引
何时创建 当两个或多个列经常一起出现在where条件中时 则在这些列上同时创建组合索引
组合索引中列的顺序是任意的 也无需相邻 但是建议将最频繁访问的列放在列表的最前面
演示(组合列 单独列)
五 位图索引
何时创建
列中有非常多的重复的值时候 例如某列保存如何删除oracle索引了 性别 信息
Where 条件中包含了很多OR操作符
较少的update操作 因为要相应的跟新所有的bitmap
结构 位图索引使用位图作为键值 对于表中的每一数据行位图包含了TRUE( ) FALSE( ) 或NULL值
优点 位图以一种压缩格式存放 因此占用的磁盘空间比标准索引要小得多
语法 CREATE BITMAP INDEX index ON table (column[ column] );
掩饰
create table bitmaptable as select * from indextable where owner in( SYS PUBLIC );
分析 查找 建立索引 查找
六 基于函数的索引
何时创建 在WHERE条件语句中包含函数或者表达式时
函数包括 算数表达式 PL/SQL函数 程序包函数 SQL函数 用户自定义函数
语法 CREATE INDEX index ON table (FUNCTION(column));
演示
必须要分析表 并且query_rewrite_enabled=TRUE
或者使用提示/*INDEX(ic_index)*/
七 反向键索引
目的 比如索引值是一个自动增长的列
多个用户对集中在少数块上的索引行进行修改 容易引起资源的争用 比如对数据块的等待 此时建立反向索引
性能问题
语法
重建为标准索引 反之不行
八 键压缩索引
比如表landscp的数据如下
site feature job
Britten Park Rose Bed Prune
Britten Park Rose Bed Mulch
Britten Park Rose Bed Spray
Britten Park Shrub Bed Mulch
Britten Park Shrub Bed Weed
Britten Park Shrub Bed Hoe
……
查询时 以上 列均在where条件中同时出现 所以建立基于以上 列的组合索引 但是发现重复值很多 所以考虑压缩特性
Create index zip_idx
on landscp(site feature job)
press ;
将索引项分成前缀(prefix)和后缀(postfix)两部分 前两项被放置到前缀部分
Prefix : Britten Park Rose Bed
Prefix : Britten Park Shrub Bed
实际所以的结构为
Prune
Mulch
Spray
Mulch
Weed
Hoe
特点 组合索引的前缀部分具有非选择性时 考虑使用压缩 减少I/O 增加性能
九 索引组织表(IOT)
将表中的数据按照索引的结构存储在索引中 提高查询速度
牺牲插入更新的性能 换取查询性能 通常用于数据仓库 提供大量的查询 极少的插入修改工作
必须指定主键 插入数据时 会根据主键列进行B树索引排序 写入磁盘
十 分区索引
簇:
A cluster is a group of tables that share the same data blocks because they share mon columns and are often used together
lishixinzhi/Article/program/Oracle/201311/17769
oracle 数据库如何建立索引 如何用索引?创建索引语法:
CREATE[UNIQUE]|[BITMAP]INDEXindex_name
--unique表示唯一索引
ONtable_name([column1[ASC|DESC],column2
--bitmap,创建位图索引
[ASC|DESC],?]|[express])[TABLESPACEtablespace_name][PCTFREEn1]
--指定索引在数据块中空闲空间
[STORAGE(INITIALn2)][NOLOGGING]
--表示创建和重建索引时允许对表做DML操作,默认情况下不应该使用
[NOLINE][NOSORT];
--表示创建索引时不进行排序,默认不适用,如果数据已经是按照该索引顺序排列的可以使用
扩展资料:
1、如果有两个或者以上的索引,其中有一个唯一性索引,而其他是非唯一,这种情况下oracle将使用唯一性索引而完全忽略非唯一性索引
2、至少要包含组合索引的第一列(即如果索引建立在多个列上,只有它的第一个列被where子句引用时 , 优化器才会使用该索引)
3、小表不要简历索引
4、对于基数大的列适合建立B树索引,对于基数小的列适合简历位图索引
5、列中有很多空值,但经常查询该列上非空记录时应该建立索引
6、经常进行连接查询的列应该创建索引
7、使用createindex时要将最常查询的列放在最前面
8、LONG(可变长字符串数据,最长2G)和LONGRAW(可变长二进制数据,最长2G)列不能创建索引
9、限制表中索引的数量(创建索引耗费时间,并且随数据量的增大而增大;索引会占用物理空间;当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护 , 降低了数据的维护速度)
如何快速掌握 Navicat for Oracle 表索引只要各索引的组合列有所不同,用户可以为一个表创建多个索引 。如果指定明显不同的组合列,可以使用相同的列来创建多个索引 。
在“索引”选项卡 , 只需简单地点击索引栏位就可以编辑,使用索引工具栏,可以方便地创建新的、编辑或删除选定的索引栏位 。
● 添加索引:添加一个索引到表 。
● 删除索引:删除已选择的索引 。
使用“名”编辑框来设置索引名 。
索引包含栏位:简单地双击“栏位”或点击栏位按钮,就可以打开编辑器来编辑 。
索引类型:定义表索引的类型 。
● Non-unique Non-unique:不施加唯一(unique)索引的限制到列值 。
● Unique Unique:保证一个表中没有两行在键列有相同的值 。
● Bitmap:在 bitmap 索引,每键值用 bitmap 代替 rowids 列表 。
与度数并行:当用户有大量数据及多个处理器 , 并行索引可以提高索引的表现,输入决定分割索引进程数的度数 。
表空间:创建索引的表空间 。索引可以创建在与它索引的表相同或不同的表空间 。
模式:创建索引的模式 。
温馨提示:要在自己的模式创建索引,至少必须满足以下一项条件:
● 要创建索引的表或簇是在自己的模式 。
● 有 INDEX 权限在要创建索引的表 。
● 有 CREATE ANY INDEX 系统权限 。
要在其他模式创建索引,必须满足以下全部条件:
● 有 CREATE ANY INDEX 系统权限 。
● 其他模式的拥有者有配额给表空间包含索引或索引分割区,或 UNLIMITED TABLESPACE 系统权限 。
oracle中如何删除已建立的索引1、打开Navicat如何删除oracle索引 , 右击oracle数据库如何删除oracle索引,然后点击【打开连接】 。
2、点击【其它】如何删除oracle索引,然后点击【索引】 , 此时显示oracle数据库中所有的索引 。
3、右击要删除的索引,然后选择【设计索引】 。
4、核实索引内容,以免错删 。
5、右击要删除的索引,然后选择【删除索引】 。
6、最后勾选【确定】,然后点击【删除】 。
7、此时该索引就删除了 。
oracle 索引存在则删除Oracle sqlplus代码如下:
set serverout on;
declare
cnt number(10):=0;
begin
select count(*) into cnt from all_indexes where index_name='TEST_INDEX' and table_name='SYS_TEST';
if cnt=1 then
Execute immediate'drop index test_index';
Execute immediate'create index test_index on sys_test(aaa) indextype is ctxsys.context';
dbms_output.PUT_LINE('索引已经删除并重建');
else
dbms_output.PUT_LINE('索引不存在');
end if;
end;
【如何删除oracle索引 oracle删除索引,重新添加有什么影响吗?】关于如何删除oracle索引和oracle删除索引,重新添加有什么影响吗?的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读