普通索引轉唯一索引,資料重複問題解決

2021-09-02 07:00:29 字數 1270 閱讀 4986

在資料庫的設計的時候經常會遇到這種問題,建立了普通索引想轉唯一索引,但是資料庫有重複資料了。而且資料不好找和刪除。這個時候怎麼辦呢?

這裡給乙個例子:

表 student 其資料結構如下:

idname

grade

score

1zhanghanlun12

2zhanghanlun13

3zhangwei10

在這個表中我們想要新建唯一索引uniq_name_grade(name,grade)

但是有重複的資料,怎麼辦呢?

執行下面的sql

alter

ignore

table student add

unique

index

`uniq_name_grade`

(`name`

,`grade`

);

重點是ignore引數,會將重複的資料刪掉,保留一條。

現在的表的結構如下:

idname

grade

score

1zhanghanlun12

3zhangwei10

執行sql完將重複的資料刪掉了,只儲存了一條資料

其表的ddl如下:

create

table

`student`

(`id`

int(11)

notnull

auto_increment

,`name`

varchar

(255

)collate utf8_bin not

null

,`grade`

int(10)

notnull

,`score`

int(10)

notnull

,primary

key(

`id`),

unique

key`uniq_name_grade`

(`name`

,`grade`))

engine

=innodb

auto_increment=4

default

charset

=utf8 collate

=utf8_bin;

普通索引 唯一索引 區別

分析唯一索引和普通索引在查詢語句和更新語句中的效能影響。假設執行以下語句 select id from t where k 5這個查詢語句在索引樹上查詢的過程,先是通過 b 樹從樹根開始,按層搜尋到葉子節點,然後可以在資料頁內部通過二分法來定位記錄。以上看起來唯一索引比普通索引少了一步判斷,其實帶來...

主索引 普通索引 候選索引 唯一索引

1.普通索引 普通索引 由關鍵字key或index定義的索引 唯一的任務是加快對資料的訪問速度。因此,應該只為那些最經常出現在查詢條件 wherecolumn 或排序條件 orderbycolumn 中的資料列建立索引 2.唯一索引 在某個資料列只包含彼此不同的值,在為這個資料列建立索引時就應該用關...

普通索引 唯一索引 主鍵索引 候選索引

1 普通索引 1 定義 最基本的索引型別,沒有唯一性之類的限制。2 建立方式 a 建立索引,例如create index 索引的名字 on tablename 列的列表 b 修改表,例如alter table tablename add index 索引的名字 列的列表 c 建立表的時候指定索引,例...