序列与索引
序列
定义:在一张表中,我们需要添加一条记录之后,有对应的主键自动增长(主键自增),这种行为称为序列。
其他数据库:
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)索引会影响 数据的插入,修改,删除的效率