0
点赞
收藏
分享

微信扫一扫

oracle查看sequence,约束和索引(创建索引)


文章目录

  • ​​创建sequence​​
  • ​​查看sequence​​
  • ​​查看索引​​
  • ​​查看约束​​
  • ​​创建索引​​
  • ​​有重复数据的表如何创建索引​​
  • ​​不同表同时创建索引会互相等待吗​​

创建sequence

create sequence T_S_TICKET_SEQUENCE  -- Sequence实例名
minvalue 1 -- 最小值,可以设置为0
maxvalue 2147483647 -- 最大值
start with 1 -- 从1开始计数
increment by 1 -- 每次加几个
cache 20; -- 设置缓存cache个序列,如果系统down掉了或者其它情况将会导致序列不连续,也可以设置为---------NOCACHE

查看sequence

select * from user_sequences where sequence_name ='';

注:查看序列不要用以下两种形式,它们都是不对的

-- 会报错 ORA-02201: 此处不允许序列
select * from T_USER_SEQ;
-- 会报错 ORA-00942: 表或视图不存在
select * from T_USER_SEQ.nextval

查看索引

-- user_ind_columns里面有索引对应的列信息,更常用
select table_name,index_name,column_name
from user_ind_columns
where table_name='T_USER' ;

-- 一个索引可能对应多列
-- wm_concat 相当于 mysql的group_concat
select index_name,wm_concat(column_name)
from user_ind_columns
where table_name='T_USER' group by index_name;


select * from user_indexes
where table_name='T_USER' ; -- 看不到索引关联的哪个列

查看约束

select * from user_constraints where table_name='';

创建索引

语句:

-- 单字段索引
create index user_username_index_45678 on user(username asc)
-- 联合索引
create index user_conn_index_1234 on user(username,age asc)

注: 索引名建议用这样的格式
表_字段_index_随机数字 因为索引属于全库, 这样不容易重复。

有重复数据的表如何创建索引

先去重再加索引吗?
当然是可以的,但还有更简单的办法。
alter table 间加个ignore即可,表示遇到冲突的unique数据则直接抛弃而不报错。

语句:

ALTER IGNORE TABLE t_student ADD PRIMARY KEY (no);

同理,INSERT IGNORE也有类似的作用。

不同表同时创建索引会互相等待吗

场景: 有很多表要创建索引,正常是一条一条执行,但是这样时间会比较长。
如果通过多个session分别创建索引,效率是否会提高。也就是说,创建索引时的阻塞是表级的,还是库级的。

暂无答案,为保险起见,建议一条一条执行。


举报

相关推荐

0 条评论