位图索引比较少用,它主要运用于数据量不多,创建在重复性大的字段上面。
以下是创建一个位图索引的过程,前面的主要是添加字段与约束的过程。
---给表yourtest添加字段并创建位图索引:
---查看表结构并查看记录:
suxing@PROD>desc yourtest;
Name Null? Type
----------------------------------------- -------- ----------------------------
ID NUMBER(3)
NAME VARCHAR2(6)
CREATED DATE
suxing@PROD>select * from yourtest;
ID NAME CREATED
---------- ------ ---------
125 susu 02-NOV-16
123 susky 02-NOV-16
124 hhhh 10-NOV-16
126 wwww 10-NOV-16
125 dddd 11-NOV-16
---添加字段sex:
--添加字段:
suxing@PROD>alter table yourtest add sex varchar2(5)
2 constraint ch_sex check (sex in ('man','woman'));
Table altered.
#字段添加完成,创建字段时候不需要指定字段的关键字column,但在删除字段时候一定要指定字段的关键字column。
#添加字段与创建表时候的方法一样,可以附加上字段的约束。
--查看添加后的表结构:
suxing@PROD>desc yourtest
Name Null? Type
----------------------------------------- -------- ----------------------------
ID NUMBER(3)
NAME VARCHAR2(6)
CREATED DATE
SEX VARCHAR2(5)
---给表yourtest的字段sex添加数据:
--填充数据:
suxing@PROD>update yourtest set sex ='woman';
5 rows updated.
suxing@PROD>commit;
Commit complete.
#填充5条数据。
--查看表记录:
suxing@PROD>select * from yourtest;
ID NAME CREATED SEX
---------- ------ --------- -----
125 susu 02-NOV-16 woman
123 susky 02-NOV-16 woman
124 hhhh 10-NOV-16 woman
126 wwww 10-NOV-16 woman
125 dddd 11-NOV-16 woman
--校验字段的check约束:
suxing@PROD>update yourtest set sex='xxman'
2 where name ='hhhh';
update yourtest set sex='xxman'
*
ERROR at line 1:
ORA-02290: check constraint (SUXING.CH_SEX) violated
#修改不成功,因为字段sex只能填写woman或者man。
--继续修改部分记录:
suxing@PROD>update yourtest set sex='man'
2 where name in ('susu','hhhh','wwww');
3 rows updated.
#已经修改3条记录的数据。
--查看表中的记录:
suxing@PROD>select * from yourtest;
ID NAME CREATED SEX
---------- ------ --------- -----
125 susu 02-NOV-16 man
123 susky 02-NOV-16 woman
124 hhhh 10-NOV-16 man
126 wwww 10-NOV-16 man
125 dddd 11-NOV-16 woman
---创建位图索引:
--创建索引:
suxing@PROD>create bitmap index
2 ind_test on yourtest(sex)
3 tablespace myspace;
Index created.
#位图索引创建完成。
--查看用户的索引信息:
suxing@PROD>select index_name,table_name,index_type,status
2 from user_indexes;
INDEX_NAME TABLE_NAME INDEX_TYPE STATUS
--------------- --------------- --------------- --------
IND_TEST YOURTEST BITMAP VALID
IDX_T4 T4 NORMAL VALID
IDX_T3 T3 NORMAL VALID
IND_STU STUDENTS NORMAL VALID
IND_MYTEST MYTEST NORMAL VALID
IND_COU COURSES NORMAL VALID
6 rows selected.
#可以看到,位图索引创建成功,与类型与普通的索引有所不一样。
---查看用户更详细的索引信息:
suxing@PROD>col TABLESPACE_NAME for a15;
suxing@PROD>select index_name,table_name,index_type,status,
2 tablespace_name from user_indexes;
INDEX_NAME TABLE_NAME INDEX_TYPE STATUS TABLESPACE_NAME
--------------- --------------- --------------- -------- ---------------
IND_TEST YOURTEST BITMAP VALID MYSPACE
IDX_T4 T4 NORMAL VALID USERS
IDX_T3 T3 NORMAL VALID USERS
IND_STU STUDENTS NORMAL VALID MYSPACE
IND_MYTEST MYTEST NORMAL VALID MYSPACE
IND_COU COURSES NORMAL VALID MYSPACE
6 rows selected.
#通过这些信息也可以知道,创建索引与创建表一样,需要制定存放的表空间,缺省的情况下,即默认是存放在users表空间里面。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31392094/viewspace-2128662/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/31392094/viewspace-2128662/