索引是一種特殊的檔案(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 普通索引允許被索...