oracle between and索引,SQL Server和Oracle中索引介绍(7)

CREATE INDEX IDX_jobs_title on hr.jobs (job_title DESC);

SET autotrace traceonly EXPLAIN;

SELECT * FROM hr.jobs

WHERE job_title Between 'a' AND 'ZZZZZZZZZZZ ';

Execution Plan

----------------------------------------------------------

0 SELECT STATEMENT Optimizer=CHOOSE (Cost=1 Card=1 Bytes=33)

1 0 FILTER

2 1 TABLE ACCESS (BY INDEX ROWID) OF 'JOBS' (Cost=1 Card=1 B

ytes=33)

3 2 INDEX (RANGE SCAN) OF 'IDX_JOBS_TITLE' (NON-UNIQUE) (C

ost=2 Card=1)

SQL> SELECT * from hr.jobs

2 WHERE job_title between 'a' and 'ZZZZZZZZZZZ ';

Execution Plan

----------------------------------------------------------

0 SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=1 Bytes=33)

1 0 FILTER

2 1 TABLE ACCESS (FULL) OF 'JOBS' (Cost=2 Card=1 Bytes=33)

SQL> DROP INDEX IDX_jobs_title ;

SQL> CREATE INDEX IDX_jobs_title on hr.jobs (job_title );

SQL> Select * FROM hr.jobs

2 Where job_title between 'a' and 'ZZZZZZZZZZZ ';

Execution Plan

----------------------------------------------------------

0 SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=1 Bytes=33)

1 0 FILTER

2 1 TABLE ACCESS (FULL) OF 'JOBS' (Cost=2 Card=1 Bytes=33)

位图索引

位图索引(bitmap index)是从Oracle7.3 版本开始引入的。目前Oracle 企业版和个人版都支持位图索引,但标准版不支持。位图索引是为数据仓库/在线分析查询环境设计的,在此所有查询要求的数据在系统实现时根本不知道。位图索引特别不适用于OLTP 系统,如果系统中的数据会由多个并发会话频繁地更新,这种系统也不适用位图索引。

位图索引是这样一种结构,其中用一个索引键条目存储指向多行的指针;这与B*树结构不同,在B*树结构中,索引键和表中的行存在着对应关系。在位图索引中,可能只有很少的索引条目,每个索引条目指向多行。而在传统的B*树中,一个索引条目就指向一行。

B*树索引一般来讲应当是选择性的。与之相反,位图索引不应是选择性的,一般来讲它们应该“没有选择性“。如果有大量在线分析查询,特别是查询以一种即席方式引用了多列或者会生成诸如COUNT 之类的聚合,在这样的环境中,位图索引就特别有用 。位图索引使用 CREATE BITMAP INDEX index_name ON table_name(column_name1,column_name2) TABLESPACE tablespace_name命令语法创建。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值