1、索引的分类
按索引列的个数,索引分为单列索引和复合索引。
按索引列的唯一性,索引分为唯一索引和非唯一索引。
2、索引的组成
索引有两个部分组成,索引列所对应的值和行地址(ROWID,即原表中列所对应的行地址)。
3、索引的创建
为了对比明显,我们创建一个数据比较多的表: SQL> create table test1 as select * from dba_objects; SQL> insert into test1 select * from test1; 已创建50341行。
SQL> insert into test1 select * from test1; 已创建100682行。 SQL> select count(*) from test1; COUNT(*) ---------- 201364 打开Oracle的计数器 SQL> set timing on SQL> select * from test1 where object_name='test1'; 已用时间: 00: 00: 00.17 在object_name上创建索引 SQL> create index test1_on on test1(object_name); SQL> select * from test1 where object_name='test1'; 已用时间: 00: 00: 00.20 4、基于函数的索引 SQL> create index test1_on_l on test1(lower(object_name)); SQL> select * from test1 where lower(object_name)='test1'; 5、删除索引 SQL> drop index test1_on_l;
二、同义词
同义词相当于为对象起的别名。如果对象名比较长,输入起来不方便,可以为对象起一个短一点的同义词。
1、创建同义词
SQL> create synonym table1 for test1;
同义词又分私有和公有两种。上面我们所说的同义词,是私有同义词。另外还有一种公有同义词,使用“CREATE PUBLIC SYNONYM 同义词 FOR 对象名”命令创建。
公有同义词是大家所公有的,每个有户都可以使用。而私有同义词在默认情况下,只能由创建用户使用。这是它们的不同之处,其他都一样。
2、删除同义词 SQL> drop synonym table1;
三、序列
1、序列的创建
下面我们创建一个从1开始,每次增加2,最大值是20的序列:
SQL> create sequence seq1 2 increment by 2 3 start with 1 4 maxvalue 20 5 nocycle; 通过下面的语句可以查询创建的序列的信息 SQL> select sequence_name,min_value,max_value, increment_by,last_number from user_sequences; 2、序列的使用 SQL> select seq1.nextval from dual; SQL> select seq1.currval from dual; 3、序列的修改 SQL> alter sequence seq1 cycle nocache; 4、删除序列 SQL> drop sequence seq1;