在講解聚集索引和非聚集索引的區別之前我們先看看如何用sql語句建立聚集索引和非聚集索引:
create nonclustered index inx_index on teacheinfo(tno,tname,t***,tage) --建立非聚集索引
create clustered index charge_no on charge(charge_no) --建立聚集索引
聚集索引確定表中資料的物理順序。聚集索引類似於**簿,後者按姓氏排列資料。由於聚集索引規定資料在表中的物理儲存順序,因此乙個表只能包含乙個聚集索引。但該索引可以包含多個列(組合索引),就像**簿按姓氏和名字進行組織一樣。 聚集索引對於那些經常要搜尋範圍值的列特別有效。使用聚集索引找到包含第乙個值的行後,便可以確保包含後續索引值的行在物理相鄰。例如,如果應用程式執行的乙個查詢經常檢索某一日期範圍內的記錄,則使用聚集索引可以迅速找到包含開始日期的行,然後檢索表中所有相鄰的行,直到到達結束日期。這樣有助於提高此類查詢的效能。同樣,如果對從表中檢索的資料進行排序時經常要用到某一列,則可以將該錶在該列上聚集(物理排序),避免每次查詢該列時都進行排序,從而節省成本。 當索引值唯一時,使用聚集索引查詢特定的行也很有效率。例如,使用唯一雇員 id 列 emp_id 查詢特定雇員的最快速的方法,是在 emp_id 列上建立聚集索引或 primary key 約束。
非聚集索引一種索引,該索引中索引的邏輯順序與磁碟上行的物理儲存順序不同。 基礎表的資料行不按非聚集鍵的順序排序和儲存。 非聚集索引的葉層是由索引頁而不是由資料頁組成。
快速理解聚集索引和非聚集索引
資料庫的索引,聽起來挺神秘的,仔細想想。這些索引,其實就是平時咱們查東西時候常用的兩種手段。無非就是為了提高我們找東西的效率而已。那麼我們平時又是怎麼查東西呢?聚集索引 聚集索引,於生活嘗試。這中索引可以說是按照資料的物理儲存進行劃分的。對於一堆記錄來說,使用聚集索引就是對這堆記錄 進行 堆劃分。即...
快速理解聚集索引和非聚集索引
資料庫的索引,聽起來挺神秘的,仔細想想。這些索引,其實就是平時咱們查東西時候常用的兩種手段。無非就是為了提高我們找東西的效率而已。那麼我們平時又是怎麼查東西呢?聚集索引,於生活嘗試。這中索引可以說是按照資料的物理儲存進行劃分的。對於一堆記錄來說,使用聚集索引就是對這堆記錄 進行 堆劃分。即主要描述的...
快速了解聚集索引與非聚集索引
從表的物理起點開始瀏覽表中的每一行,如果篩選條件,則包含在結果集中。使用b樹查詢資料。先解釋下幾個概念 索引分為3種,如何理解呢?新建一張operlog表示例,沒加主鍵 建立主鍵會預設建立乙個唯一聚集索引 create table dbo operlog id int identity 1,1 no...