oracle alter增加索引,sql – Oracle alter index允许索引空值

你现在至少有四种选择:

>创建“常量表达式”索引…

create index half_null_col_idx

on huge_table (half_null_col, 1);

>在表上创建位图索引.位图索引也允许索引NULL …

create bitmap index half_null_col_idx

on huge_table (half_null_col);

>在基于函数的NULL重新映射到某个值上创建索引,并在查询中使用重新映射的NULL,而不是查询NULL …

create index half_null_col_idx

on huge_table (nvl(half_null_col, ''));

select *

from huge_table

where nvl(half_null_col, '')

= ''

;

>重新分区表,以便将NULL值全部放入一个分区,将其余值放入不同的分区/分区…

create table huge_table_2

partition by list (half_null_col)

(

partition pt_nulls values (null),

partition pt_others values (default)

)

as

select *

from huge_table;

如果从表中仅选择count(*),则位图索引可能是您的最佳选择.

如果要在其他地方使用表中的完整数据行(在连接到另一个表或将它们导出到CSV或其他表),那么重新分区可能是您的最佳选择.

如果你不能/不想重新分区表而你不能创建位图索引(例如,由于表上的并发DML活动很多),那么“常量表达式”索引或“NULL重新映射” “对某事”索引可能是你最好的选择.

要回答您的原始问题:

> Oracle内部将其视为“基于功能的索引”.或许可以搜索这个术语.>你不能.但是没有相关的性能开销在线索引下降创建afaik. Oracle DB足以在这里处理“多任务处理”的事情 – 创建索引以及您的应用程序几乎像以前一样快速地工作.如果您需要重新创建索引,请执行此操作.如果你选择“常量表达式”选项,你可以先创建新索引,然后删除旧索引.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值