index

--创建语法:
Create [ Unique | Bitmap ] Index [Schema.]index_name On [Schema.]table_name(column_name1 Asc | Desc,...,columne_nameN Asc|Desc )
[Tablespace tablespace_name]
[Reverse]


SQL> Create Table 学生表(Id Number,年级 Varchar2(4),学号 Varchar2(4),姓名 Varchar2(6),性别 Varchar2(2),年龄 Varchar2(2));
Table created
SQL> Create Unique Index ind_学生表_id On 学生表(Id Asc) Tablespace Users Reverse;
Index created
SQL> Create Unique Index ind_学生表_年级_学号 On 学生表(年级 Asc,学号 Asc) Tablespace Users;
Index created
SQL> Create Index ind_学生_姓名 On 学生表(Upper(姓名) Asc) ;
Index created
SQL> Create Bitmap Index ind_func_性别 On 学生表(性别 Asc);
Index created


SQL> Select a.index_name,a.index_type,a.table_name,a.uniqueness,a.tablespace_name From dba_indexes a Where a.table_name='学生表' ;
INDEX_NAME                     INDEX_TYPE                  TABLE_NAME                     UNIQUENESS TABLESPACE_NAME
------------------------------ --------------------------- ------------------------------ ---------- ------------------------------
IND_学生表_ID                  NORMAL/REV                  学生表                         UNIQUE     USERS
IND_学生表_年级_学号           NORMAL                      学生表                         UNIQUE     USERS
IND_学生_姓名                  FUNCTION-BASED NORMAL       学生表                         NONUNIQUE  ZL9BASEITEM
IND_FUNC_性别                  BITMAP                      学生表                         NONUNIQUE  ZL9BASEITEM


SQL>  Select a.INDEX_NAME,a.COLUMN_NAME From dba_ind_columns a Where a.table_name='学生表' ;
INDEX_NAME                     COLUMN_NAME
------------------------------ --------------------------------------------------------------------------------
IND_学生表_ID                  ID
IND_学生表_年级_学号           年级
IND_学生表_年级_学号           学号
IND_学生_姓名                  SYS_NC00007$
IND_FUNC_性别                  性别


SQL> Create Table t(Id Number);
Table created
SQL> Create Index ind_t_id On t(Id);
Index created


SQL> 
SQL> Declare
  2    i Number;
  3  Begin
  4    For i In 1..2000000 Loop
  5      Insert Into t Values(i);
  6      If Mod(i,10000)=0 Then
  7         Commit;
  8      End If;
  9    End Loop;
 10  End;
 11  /
PL/SQL procedure successfully completed


SQL> Select a.name,a.pct_used From Index_Stats a;
NAME                             PCT_USED
------------------------------ ----------


SQL> analyze index ind_t_id validate structure;
Index analyzed


SQL> Select a.name,a.pct_used From Index_Stats a;
NAME                             PCT_USED
------------------------------ ----------
IND_T_ID                              100


SQL> delete t where rownum<=1300000;
1300000 rows deleted


SQL> commit;
Commit complete


SQL> analyze index ind_t_id validate structure;
Index analyzed


SQL> Select a.name,a.pct_used From Index_Stats a;
NAME                             PCT_USED
------------------------------ ----------
IND_T_ID                               70


SQL> alter index ind_t_id rebuild;
Index altered


SQL> Select a.name,a.pct_used From Index_Stats a;
NAME                             PCT_USED
------------------------------ ----------


SQL> analyze index ind_t_id validate structure;
Index analyzed


SQL> Select a.name,a.pct_used From Index_Stats a;
NAME                             PCT_USED
------------------------------ ----------
IND_T_ID                               90


SQL> Alter Index ind_t_id Rebuild Online;
Index altered


SQL> drop index ind_t_id;
Index dropped


SQL> 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值