序列与索引

序列

  定义:在一张表中,我们需要添加一条记录之后,有对应的主键自动增长(主键自增),这种行为称为序列。

 

  其他数据库:

 

  sql server :   id int primary key identity(1,1)

  my sql :   id int primary key auto_increment

 

  案例:

 

        create sequence myseq

        start with  1                              --初始值

        increment by  1                  –增长多少

        minvalue   1                             --最小值

       maxvalue 30000                       --最大值

  cycle                                        --表示序列增长到30000后,再循环从1开始,否则nocycle

  nocache                                    --nocache表示不缓冲,【cache10:表示一次产生10个号供你使用,优点:提高效率,缺点:容易产生跳号问题】

  

  使用:

 

      create table user4(id number primary key,name nvarchar2(32)); 

 

      insert into user4 values(myseq.next.val,’jack’);

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

      myseq:表示序列的名字,nextval:关键字

 

序列的细节: 

      (1)可以为表的列自动产生  值

      (2)  由用户创建数据库对象,并由多个用户共享

                            system 可以使用scott创建的序列

            如果system 使用scott创建的序列,从什么开始增长?

             答:接着增长

      (3)一般用于主键或唯一列(unique)

      (4)可以使用序列名.currval 来查看当前的序号(* 必须先使用 .nextval)

                            select myseq.currval from dual;

索引 

 索引的分类:

 (1)单列索引

     create index 索引名 on 表名(列名);

 (2)复合索引

     create index 索引名 on 表名(列名1,列名2);

索引的应用场合:

(1)在大表建立索引才有意义。

(2)在where子句或是连接条件上经常引用的列上建立索引。

(3)索引的层次不要超过4层。

(4)在逻辑型字段上(男/女),或者固定的列上不要建立索引。

 

索引的缺点:

     (1)建立索引会增加表的大小(1.2倍)。

     (2)索引会影响 数据的插入,修改,删除的效率

posted @ 2017-08-09 18:51  王高啊  阅读(818)  评论(0编辑  收藏  举报