oracle查看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分别创建索引,效率是否会提高。也就是说,创建索引时的阻塞是表级的,还是库级的。

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

报错 违反唯一约束条件 (T_USER.SYS_C0011561)

虽然报错约束,可能是约束、也可能是索引,这2个都要查下。

select * from user_constraints WHERE CONSTRAINT_NAME ='SYS_C0011561'
select table_name,index_name,column_name 

from user_ind_columns WHERE INDEX_NAME='SYS_C0011561'
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值