赞
踩
create sequence T_S_TICKET_SEQUENCE -- Sequence实例名
minvalue 1 -- 最小值,可以设置为0
maxvalue 2147483647 -- 最大值
start with 1 -- 从1开始计数
increment by 1 -- 每次加几个
cache 20; -- 设置缓存cache个序列,如果系统down掉了或者其它情况将会导致序列不连续,也可以设置为---------NOCACHE
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分别创建索引,效率是否会提高。也就是说,创建索引时的阻塞是表级的,还是库级的。
暂无答案,为保险起见,建议一条一条执行。
虽然报错约束,可能是约束、也可能是索引,这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'
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。