索引(三)主鍵索引 唯一索引 聯合索引

2021-09-29 20:58:43 字數 1343 閱讀 4580

索引是一種特殊的檔案(innodb資料表上的索引是表空間的乙個組成部分),它們包含著對資料表裡所有記錄的引用指標。

索引可以極大的提高資料的查詢速度,但是會降低插入、刪除、更新表的速度,因為在執行這些寫操作時,還要操作索引檔案。

普通索引(由關鍵字key或index定義的索引):

唯一任務是加快對資料的訪問速度。普通索引允許被索引的資料列包含重複的值。

唯一索引:如果能確定某個資料列將只包含彼此各不相同的值,在為這個資料列建立索引的時候就應該用關鍵字unique把它定義為乙個唯一索引。也就是說,唯一索引可以保證資料記錄的唯一性。

主鍵索引:是一種特殊的唯一索引,在一張表中只能定義乙個主鍵索引,主鍵用於唯一標識一條記錄,使用關鍵字 primary key 來建立。

聯合索引:可以覆蓋多個資料列,如像index(columna, columnb)索引

主鍵索引分兩種:

復合主鍵:就是指表的主鍵由乙個以上的字段組成 。

例如;

create table test 

(    name varchar(19), 

id number, 

value varchar(10), 

primary key (id,name) 

)

上面的id和name欄位組合起來就是test表的復合主鍵 (若其一為單索引欄位時,左邊的id才會有索引);

它的出現是因為name欄位可能會出現重名,所以要加上id欄位這樣就可以保證你記錄的唯一性 ;

一般情況下,主鍵的字段長度和字段數目要越少越好 ;

聯合主鍵:就是多個主鍵聯合形成乙個主鍵組合,體現在聯合。(主鍵原則上是唯一的,別被唯一值所困擾。) 

簡單的例子 :

主鍵a  跟  主鍵b   組成  聯合主鍵 

主鍵a  跟  主鍵b   的  資料  可以  完全相同(困擾吧,沒關係),聯合就在於主鍵a跟主鍵b形成的聯合主鍵是唯一的。 

下例主鍵a資料是1,主鍵b資料也是1,聯合主鍵其實是11,這個11是唯一值,絕對不充許再出現11這個唯一值。(這就是多對多關係) 

主鍵a資料  |  主鍵b資料 

1      1 

2      2 

3      3

主鍵a與主鍵b的聯合主鍵值最多也就是 

11 

12 13 

21 22 

23 31 

32 33

索引,主鍵,唯一索引,聯合索引的區別

索引是一種特殊的檔案,它們包含著對所有記錄的引用指標。普通索引 由關鍵字key或index定義的索引 的唯一任務是加快對資料的訪問速度。普通索引允許被索引的資料列包含重複的值。如果能確定某個資料列將只包含彼此各不相同的值,在為這個資料列常建立索引時應該用就用關鍵字unique把他定義成乙個唯一索引。...

索引,主鍵,唯一索引,聯合索引 的區別

簡單描述mysql中,索引,主鍵,唯一索引,聯合索引 的區別,對資料庫的效能有什麼影響 索引是一種特殊的檔案 innodb 資料表上的索引是表空間的乙個組成部分 它們 包含著對資料表裡所有記錄的引用指標。主鍵索引 primary key 資料表的主鍵列使用的就是主鍵索引。一張資料表有只能有乙個主鍵,...

mysql中,索引,主鍵,唯一索引,聯合索引的區別

mysql中,索引,主鍵,唯一索引,聯合索引的區別,對資料庫的效能有什麼影響。1 索引是一種特殊的檔案 innodb資料表上的索引是表空間的乙個組成部分 它們包含著對資料表裡所有記錄的引用指標。2 普通索引 由關鍵字key或index定義的索引 的唯一任務是加快對資料的訪問速度。3 普通索引允許被索...