索引是一種特殊的文件(InnoDB數(shù)據(jù)表上的索引是表空間的一個組成部分)夏跷,它們包含著對數(shù)據(jù)表里所有記錄的引用指針。
普通索引(由關(guān)鍵字KEY或INDEX定義的索引)的唯一任務(wù)是加快對數(shù)據(jù)的訪問速度明未。
普通索引允許被索引的數(shù)據(jù)列包含重復(fù)的值槽华。如果能確定某個數(shù)據(jù)列將只包含彼此各不相同的值,在為這個數(shù)據(jù)列創(chuàng)建索引的時候就應(yīng)該用關(guān)鍵字UNIQUE把它定義為一個唯一索引趟妥。
也就是說猫态,唯一索引可以保證數(shù)據(jù)記錄的唯一性。
主鍵披摄,是一種特殊的唯一索引亲雪,在一張表中只能定義一個主鍵索引,主鍵用于唯一標識一條記錄疚膊,使用關(guān)鍵字 PRIMARY KEY 來創(chuàng)建义辕。 索引可以覆蓋多個數(shù)據(jù)列,如像INDEX(columnA, columnB)索引寓盗,這就是聯(lián)合索引灌砖。
主鍵分為復(fù)合主鍵和聯(lián)合主鍵
復(fù)合主鍵就是指你表的主鍵含有一個以上的字段組成 。 例如傀蚌; create table test ( name varchar(19), id number, value varchar(10), primary key (id,name) ) 上面的id和name字段組合起來就是你test表的復(fù)合主鍵 (若其一為單索引字段時基显,左邊的id才會有索引) 它的出現(xiàn)是因為你的name字段可能會出現(xiàn)重名,所以要加上ID字段這樣就可以保證你記錄的唯一性 一般情況下喳张,主鍵的字段長度和字段數(shù)目要越少越好
聯(lián)合主鍵续镇,顧名思義就是多個主鍵聯(lián)合形成一個主鍵組合美澳,體現(xiàn)在聯(lián)合销部。 (主鍵原則上是唯一的摸航,別被唯一值所困擾。) 索引可以極大的提高數(shù)據(jù)的查詢速度舅桩,但是會降低插入酱虎、刪除、更新表的速度擂涛,因為在執(zhí)行這些寫操作時读串,還要操作索引文件。 簡單的例子 主鍵A跟主鍵B組成聯(lián)合主鍵 主鍵A跟主鍵B的數(shù)據(jù)可以完全相同(困擾吧撒妈,沒關(guān)系)恢暖,聯(lián)合就在于主鍵A跟主鍵B形成的聯(lián)合主鍵是唯一的。
下例主鍵A數(shù)據(jù)是1狰右,主鍵B數(shù)據(jù)也是1杰捂,聯(lián)合主鍵其實是11,這個11是唯一值棋蚌,絕對不充許再出現(xiàn)11這個唯一值嫁佳。(這就是多對多關(guān)系) 主鍵A數(shù)據(jù) 主鍵B數(shù)據(jù) 1 1 2 2 3 3 主鍵A與主鍵B的聯(lián)合主鍵值最多也就是 11 12 13 21 22 23 31 32 33