您的位置:首页 > 其它

index

2015-08-19 23:14 281 查看
--创建语法:

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> 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: