Oracle-索引、序列、同义词

一、序列

–应用场景:主键值自动增长

1.创建序列

创建序列test_seq,起始值为10,每次增长2,最大值100,最小值9,循环序列,每次缓存10

	create sequence test_seq
	start with 10 --起始值
	increment by 2 --增长2
	maxvalue 100 --最大值100
	minvalue 9 --最小值9
	cycle
	cache 10;   

2. 查询序列值

--nextval:产生一个序列值
	select test_seq.nextval from dual;
	--注意:序列创建时是没有产生序列值的,只有通过nextval才能产生	   
			             
--currval:查询当前的序列值
	select test_seq.currval from dual;
	 --注意:第一次使用currval之前必须要先使用nextval产生一个序列值

3. 序列的应用

	--一般在insert语句中    主键列:(序列.nextval)	
	insert into emp(empno,ename,hiredate,deptno)
	values(test_seq.nextval,'zz','01-2月-13',10);

4. 修改序列

 --注意:start with不能修改
	alter sequence test_seq
	increment by 1
	maxvalue 200
	minvalue 1
	nocycle
	cache 8;

5. 删除序列

	drop sequence test_seq;

二、索引

–如果表中有primary key 或者 unique时,会自动创建索引
–提高查询速度

1. 单列索引

	create index index_emp_ename
	on emp(ename);

2. 复合索引

	create index index_emp_enamejob
	on emp(ename,job);

3. 测试环境

	create table el
	as
	select * from emp;
	insert into el select * from emp;
	update el set empno=rownum;

4. 适合创建索引

表数据量很大;
要查询的结果集在2%-4%左右;
经常用来做WHERE条件中的列或者多表连接的列;
查询列的数据范围分布很广;
查询列中包含大量的NULL值,因为空值不包含在索引中;

5. 不适合创建索引的情况

数据量很小的表;
在查询中不常用来作为查询条件的列;
频繁更新的表;
索引列作为表达式的一部分被使用时,比如常查询的条件是SALARY*12,此时在SALARY列上创建索引是没有效果的;
查询条件中有单行函数时,用不上索引;

6. 索引缺点:

占用空间;
降低DML的操作速度;

7. 删除索引

	drop index index_emp_ename;
	--注意:删除索引后,索引中的数据及定义被删除,索引所占的数据空间被释放,但表中的数据仍然存在。

三、同义词 (相当于别名)

	--注意:只有数据库管理员才拥有公有同义词的创建和删除权限
	create synonym emp1
	for emp;
	drop synonym emp1;
发布了49 篇原创文章 · 获赞 2 · 访问量 820
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 游动-白 设计师: 上身试试

分享到微信朋友圈

×

扫一扫,手机浏览