索引按照業(yè)務(wù)邏輯分為 普通索引、唯一索引、主鍵索引和全文索引。前三種都是一類索引,只不過對數(shù)據(jù)的約束性更強。普通索引沒有約束,唯一索引要求數(shù)據(jù)唯一性,關(guān)鍵字在此之上還要求不為空(只能有一個主鍵索引,因為數(shù)據(jù)存儲文件只能按照一種順序進行存儲)。
按照物理實現(xiàn)方式 分為聚集索引和非聚集索引。
聚集索引可以按照主鍵來排序存儲數(shù)據(jù),這樣查找更有效。
而非聚集索引有單獨的存放空間,索引項按照順序存儲,但索引項指向的內(nèi)容是隨機存儲的,就是系統(tǒng)會進行兩次查找,第一次先找到索引,第二次找到索引對應(yīng)的位置取出數(shù)據(jù)行。
非聚集索引不會把索引指向的內(nèi)容像聚集索引一樣直接放到索引的后面,而是維護單獨的索引表(只維護索引,不維護索引指向的數(shù)據(jù))
- 聚集索引的葉子節(jié)點存儲的就是我們的數(shù)據(jù)記錄,非聚集索引的葉子結(jié)點存儲的是數(shù)據(jù)位置。非聚集索引不會影響數(shù)據(jù)表的物理存儲順序。
- 一個表只能有一個聚集索引,因為只能有一種排序存儲方式,但可以有多個非聚集索引,也就是多個索引目錄提供數(shù)據(jù)檢索。
- 使用聚集索引的時候,數(shù)據(jù)的查詢效率高,但如果對數(shù)據(jù)進行插入、刪除、更新等操作,效率會比非聚集索引低。
對 WHERE 字句的字段建立索引,可以大幅提升查詢效率。
采用聚集索引進行數(shù)據(jù)查詢,比使用非聚集索引的查詢效率略高,如果查詢次數(shù)較多,盡量使用主鍵索引進行數(shù)據(jù)查詢。
按照字段個數(shù)分為 單一索引和聯(lián)合索引。
索引列為一列時為單一索引;多個列組合在一起創(chuàng)建的索引叫做聯(lián)合索引。
聯(lián)合索引存在最左匹配原則,就是按照最左有限的方式進行索引的匹配。