SQL server 資料庫之「索引」詳解

2021-09-25 20:00:15 字數 2119 閱讀 3449

什麼是索引?

資料庫中的索引與書籍中的目錄類似,索引使sql server編排資料的內部方法,它為sql server提供一種方法來編排查詢資料的路由。

索引頁是資料中儲存索引的資料頁。索引頁存放檢索資料行的關鍵字頁及該資料行的位址指標。通過使用索引,可以大大提高資料庫的檢索速度、改善資料庫效能。

索引的分類

1、唯一索引

唯一索引不允許兩行具有相同的索引值。建立了唯一約束,將自動建立唯一索引。儘管唯一索引有助於找到資訊,但是為了獲得最佳效能,建議使用主鍵約束。

2、主鍵索引

在資料庫關係圖中為表定義乙個主鍵將自動建立主鍵索引,主鍵索引是唯一索引的特殊型別。

主鍵索引要求主鍵中的每個值時唯一的。當在查詢中使用主鍵索引時,它還允許快速訪問資料。

3、聚集索引

在聚集索引中,表中各行的物理順序與鍵值的邏輯(索引)順序相同。

4、非聚集索引

非聚集索引建立在索引頁上,在查詢資料時可以從索引中找到記錄存放的位置。非聚集索引使表中各行資料存放的物理順序與鍵值的邏輯順序不匹配,聚集索引比非聚集索引有更快的資料訪問速度。例如,按筆畫排序的索引就是非聚集索引,「1」畫的字(詞)對應的頁碼可能比「3」畫的字(詞)對應的頁碼大(靠後)。

在sql server中,乙個表只能建立乙個聚集索引,但可以將多個非聚集索引。設定某列為主鍵,該列就預設為聚集索引。

5、復合索引

在建立索引時,並不是只能對其中一列建立索引,與建立主鍵一樣,可以將多個列組合為索引,這種索引稱為復合索引。

需要注意的是,只有用到復合索引的第一列或整個復合索引列作為條件完成資料查詢時才會用到該索引。

6、全文索引

全文索引使一種特殊型別的基於標記的功能性索引,由sql server中全文引擎服務建立和維護。全文索引主要用於大量文字中搜尋字串,此時使用全文索引的效率將大大高於使用t-sql的like關鍵字的效率。

由於sql server 圖形化操作,建立索引比較簡單,就略過建立步驟了,建立索引後,可以像查字典時選擇拼音方式或筆畫方式一樣,指定sql server資料查詢的索引查詢方式,t-sql語句如下:

select * from xueyuan                                             #指定查詢的表

with (index=ix_name) #指定要依據的索引

where 學員姓名 like '孫%' #查詢條件

雖然可以指定sql server 按哪個索引進行查詢,但一般不需要我們人工指定,sql server 將會根據所建立的索引,自動優化查詢。

使用索引可加快資料檢索速度,但為每個列都建立索引沒有必要。因為索引自身也需要維護,並且占用一定的資源,可以按照以下標準選擇建立索引的列。

頻繁搜尋的列。

經常用於查詢選擇的列。

經常排序、分組的列。

經常用於連線的列(主鍵/外來鍵)。

不要使用下面的列建立索引。

僅包含幾個不同值得列。

表中僅包含幾行,為小型表建立索引可能不太划算,因為sql server在索引中搜尋資料所花的時間比在表中逐行搜尋所花的時間更長。

查詢時儘量減少使用「星號」返回全部列,不要返回不需要的列。

索引應該盡量小,在位元組數小的列上建立索引。

where 字句中有多個條件表示式時,包含索引列的表示式應置於其他表示式之前。

避免在order by 字句中使用表示式。

根據業務資料發生頻率,定期重新生成或重新組織索引,進行碎片整理。(因為在sql server中,索引資料是由系統自動維護的,在增加、刪除和修改資料後,索引資料可能會更新。隨著長期頻繁的資料更新,索引資料會分散在磁碟的不同位置,形成碎片,由此造成查詢速度越來越慢,因此,根據資料更新的頻率,定期刪除原有索引,重新建立相同的索引,讓索引存放在連續的空間中,以此刪除碎片,可提高查詢速度。)

SQL Server資料庫 索引

描述 漢語字典中的漢字按頁存放,一般都有漢語拼音目錄 索引 偏旁部首目錄等 我們可以根據拼音或偏旁部首,快速查詢某個字詞 是sql server編排資料的內部方法。它為sql server提供一種方法來編排查詢資料 資料庫中儲存索引的資料頁 索引頁類似於漢語字 詞 典中按拼音或筆畫排序的目錄頁 通過...

資料庫基礎 索引(SQL Server)

參考原文 首先我們要知道資料庫索引是用來幹什麼的 索引是為了加快資料查詢速度而引入的,資料庫中儲存的資料在物理層是隨機儲存的,對某個列建立索引就會對該列的關鍵值進行排序並用某種資料結構儲存他的值和對應的實體地址,在sql中用的資料結構是b樹。索引的分類 1.聚集索引 聚集索引會對資料按索引按索引關鍵...

資料庫之SQLServer

sqlserver更改身份驗證方式 sqlserver中char varchar nchar nvarchar的區別 1 定義 char 固定長度,儲存ansi字元,不足的補英文半形空格。nchar 固定長度,儲存unicode字元,不足的補英文半形空格 varchar 可變長度,儲存ansi字元,...