關鍵字:單一索引、復合索引、唯一索引、系統自建索引、聚集索引、非聚集索引
一、單一索引
在乙個列上建立的索引,稱為單一索引。
語法: create index indexname on tabname(col1);
二、復合索引
在兩個以上的列上建立的索引,稱為復合索引。
語法: create index indexname on tabname(col1,col2);
總結:1、僅用復合索引的起始列作為查詢條件和同時用到復合索引的全部列的查詢速度是幾乎一樣的
2、如果僅用復合索引的非起始列作為查詢條件的話,這個索引是不起任何作用的
3、無論您是否經常使用復合索引的其他列,但起始列一定要是使用最頻繁的列
4、對一張表來說,如果有乙個復合索引idx1 on (col1,col2),就沒有必要同時建立乙個單一索引 idx2 on col1
5、相對同時建立多欄位(包含5、6個字段)的復合索引而言,建立多個窄字段(僅包含乙個,或頂多2個字段)的索引可以達到更好的效率和靈活性
三、唯一索引
惟一索引可以確保索引列不包含重複的值。
可以用多個列,但是索引可以確保索引列中每個值組合都是唯一的
語法: create unique index indexname on tabname(col1,col2);
四、系統自建索引
在使用t_sql語句建立表的時候使用primary key或unique約束時,會在表上自動建立乙個惟一索引。
注意用primary key約束的即是唯一索引,也是聚集索引。
自動建立的索引是無法刪除的。
語法:create table abc
( empid int primary key,
fullname varchar(50)unique
五、聚集索引
索引中鍵值的邏輯順序決定了表中相應行的物理順序。檢索效率比普通索引高,但對資料新增/修改/刪除的影響比較大。
特點:1、無索引,資料無序
2、 有索引,資料與索引同序
3、 資料會根據索引鍵的順序重新排列資料
4、 乙個表只能有乙個聚集索引
5、不使用在經常修改的列
語法:create clustered index indexname on tabname(col1);
六、非聚集索引
索引不影響表中的資料儲存順序。檢索效率比聚集索引低,對資料新增/修改/刪除的影響很少。
特點:1、非聚集索引資料與索引不同序
2、 乙個表可以最多可以建立249個非聚集索引
3、 先建聚集索引才能建立非聚集索引
語法:create nonclustered index indexname on tabname(col1);
七、聚簇索引與非聚簇索引的區別
1、區別聚簇索引的葉節點就是資料節點,而非聚簇索引的頁節點仍然是索引檢點,並保留乙個鏈結指向對應資料塊。
2、聚簇索引主鍵的插入速度要比非聚簇索引主鍵的插入速度慢很多。
3、相比之下,聚簇索引適合排序,非聚簇索引不適合用在排序的場合。因為聚簇索引本身已經是按照物理順序放置的,排序很快。非聚簇索引則沒有按序存放,需要額外消耗資源來排序。
4、當你需要取出一定範圍內的資料時,用聚簇索引也比用非聚簇索引好。
5、相比非聚簇索引,聚簇索引下的資料在物理上按順序排在資料頁上,重複值也排在一起,因而在那些包含範圍檢查(between、<、<=、>、>=)或使用group by或orderby的查詢時,一旦找到具有範圍中第乙個鍵值的行,具有後續索引值的行保證物理上毗連在一起而不必進一步搜尋,避免了大範圍掃瞄,可以大大提高查詢速度。
聚集索引 非聚集索引
通常情況下,建立索引是加快查詢速度的有效手段。但索引不是萬能的,靠索引並不能實現對所有資料的快速訪問。事實上,如果索引策略和資料檢索需求嚴重不符的話,建立索引反而會降低查詢效能。因此在實際使用當中,應該充分考慮到索引的開銷,包括磁碟空間的開銷及處理開銷 如資源競爭和加鎖 例如,如果資料頻繁的更新或刪...
聚集索引,非聚集索引,覆蓋索引 原理
資料庫 和 資料庫索引 這兩個東西是在伺服器端開發領域應用最為廣泛的兩個概念,熟練使用資料庫和資料庫索引是開發人員在行業內生存的必備技能 使用索引很簡單,只要能寫建立表的語句,就肯定能寫建立索引的語句,要知道這個世界上是不存在不會建立表的伺服器端程式設計師的。然而,會使用索引是一回事,而深入理解索引...
唯一索引 聚集索引和聚集索引
1.乙個表只能有乙個主索引 primary,且只有是資料庫表才有主索引,字尾為.cdx,索引關鍵字是不可以重複的.哪怕是空記錄也只可以有一條.2.候選索引可以有很多個,索引關鍵字同樣不可以重複,同樣只存在於資料庫表.3.唯一索引,可以存在於自由表,但索引關鍵字不可以重複.4.普通索引簡單的理解就是只...