oracle中,有時我們會發現有一些表中,一些記錄它們每個字段的數據 都是一樣一樣的,即重復數據,這種數據的不存在肯定是不對了。
究其原因,就是該表沒有主鍵,給一個表創建主鍵,非常容易:
alter table student add constraint pk_student primary key(studentid);
但是如果這表的數據量特別的大,那個創建主鍵的時間就會特別的長。
下面創建一種,給大表快遞創建主鍵的方法:
CREATE UNIQUE INDEX PK_student ON student(id) nologging parallel 4 ; alter index PK_student noparallel; ALTER TABLE student ADD ( CONSTRAINT PK_student PRIMARY KEY (id) USING INDEX PK_student ENABLE VALIDATE);
當然還是推薦創建表的時候就把主鍵建好,省事:
create table student (id int primary key not null,name varchar2(20));
再備注一下,刪除重復數據的sql,只留有rowid最小的記錄
delete from 表 a where (a.Id) in (select Idfrom 表 group by Id having count(*) > 1) and rowid not in (select min(rowid) from 表 group by Id having count(*)>1)
