索引的基本概念 分類 優點 使用

2021-08-09 17:16:23 字數 2580 閱讀 4084

一、索引的概念

索引就是加快檢索表中資料的方法。資料庫的索引類似於書籍的索引。在書籍中,索引允許使用者不必翻閱完整個書就能

迅速地找到所需要的資訊。在資料庫中,索引也允許資料庫程式迅速地找到表中的資料,而不必掃瞄整個資料庫。

二、索引的特點

1.索引可以加快資料庫的檢索速度

2.索引降低了資料庫插入、修改、刪除等維護任務的速度

3.索引建立在表上,不能建立在檢視上

4.索引既可以直接建立,也可以間接建立

5.可以在優化隱藏中,使用索引

6.使用

查詢處理器執行sql語句,

在乙個表上,

一次只能使

用乙個索引

7.其他

三、索引的優點

1.建立唯一性索引,保證資料庫表中每一行資料的唯一性

2.大大加快資料的檢索速度,

這也是建立索引的最主要的原因

3.加速表和表之間的連線,特別是在實現資料的參考完整性方面

特別有意義。

4.在使用分組和排序子句進行資料檢索時,同樣可以顯著減少

查詢中分組和排序的時間。

5.通過使用索引,可以在查詢的過程中使用優化隱藏器,

提高系統的效能。

四、索引的缺點

1.建立索引和維護索引要耗費時間,這種時間隨著資料量的增加而增加

2.索引需要佔物理空間,除了資料表佔資料空間之外,每乙個索引還要佔一定的物理空間,如果要建立

聚簇索引,那麼需要的空間就會更大

3.當對表中的資料進行增加、刪除和修改的時候

,索引也要動態的維護,降低了資料的維護速度

五、索引分類

1.直接建立索引和間接建立索引

直接建立索引: create index mycolumn_index 

on mytable (myclumn)

間接建立索引:定義主鍵約束或者唯一性鍵約束,可以間接建立索引

2.普通索引和唯一性索

引普通索引:create index mycolumn_index 

on mytable (myclumn)

唯一性索引:保證在索引列中的全部資料是唯一的,對聚簇索引和非聚簇索引都可以使用

create unique coustered 

index myclumn_cindex 

on mytable(mycolumn)

3.單個索引和復合索引

單個索引:即非復合索引

復合索引:又叫組合索引,在索引建立語句中同時包含多個欄位名

,最多16個字段

create index name_index 

on username(firstname,lastname)

4.聚簇索引和非聚簇索引(

聚集索引,群集索引)

聚簇索引:物理索引,與基表的物理順序相同,資料值的順序總是按照順序排列

create clustered 

index mycolumn_cindex 

on mytable(mycolumn) with

allow_dup_row

(允許有重覆記錄的聚簇索引)

非聚簇索引:create unclustered

index mycolumn_cindex on mytable(mycolumn)

六、索引的使用

1.當欄位資料更新頻率較低,查詢使用頻率較高並且存在大量重複值是建議使用聚簇索引

2.經常同時訪問多列,且每列都含有重複值可考慮建立組合索引

3.復合索引的

前導列一定好控制好,否則無法起到索引的效果。如果查詢時前導列不在查詢條件中則該復合索引不會被使用。前導列一定是使用最頻繁的列

4.多表操作在被實際執行前,查詢優化器會根據連線條件,列出幾組可能的連線方案並從中找出系統開銷最小的最佳方案。連線條件要充份考慮帶有索引的表、行數多的表;內外表的選擇可由公式:

外層表中的匹配行數*內層表中每一次查詢的次數確定,乘積最小為最佳方案

5.where子句中對列的任何操作結果都是在sql執行時逐列計算得到的,因此它不得不進行表搜尋,而沒有使用該列上面的索引;如果這些結果在查詢編譯時就能得到,那麼就可以被sql優化器優化,使用索引,避免表搜尋(例:select * from record where substring(card_no,1,4)=』5378』

&& select * from record where card_no like 』5378%』)任何對列的操作都將導致表掃瞄,它包括資料庫函式、計算表示式等等,查詢時要盡可能將操作移至等號右邊

6.where條件中的』in』在邏輯上相當於』or

』,所以語法分析器會將in ('0','1')轉化為column='0' or column='1'來執行。我們期望它會根據每個or子句分別查詢,再將結果相加,這樣可以利用column上的索引;但實際上它卻採用了"or策略",即先取出滿足每個or子句的行,存入臨時資料庫的工作表中,再建立唯一索引以去掉重複行,最後從這個臨時表中計算結果。因此,實際過程沒有利用column上索引,並且完成時間還要受tempdb資料庫效能的影響。in、or子句常會使用工作表,使索引失效;如果不產生大量重複值,可以考慮把子句拆開;拆開的子句中應該包含索引

7.要善於使用儲存過程,它使sql變得更加靈活和高效

查詢 基本概念與分類

查詢 在資料元素集合中查詢是否存在關鍵字等於某個給定關鍵字資料元素的過程。關鍵字有 查詢可分為 如果在某個資料元素集合中進行了動態查詢,則該資料元素集合可能會被改變。靜態查詢表 靜態查詢時構造的儲存結構。主要有三種靜態查詢表 動態查詢表 動態查詢時構造的儲存結構。主要有兩種動態查詢表 樹結構 雜湊表...

排序的基本概念和分類

排序 排序是將一批無序的記錄 資料 重新排列成按關鍵字有序的記錄序列的過程。排序的分類 排序分為插入排序 選擇排序 交換排序 歸併排序四大類,詳細分類如下圖 七大經典排序 氣泡排序 快速排序 選擇排序 堆排序 插入排序 希爾排序 合併排序 穩定排序 對於關鍵字相等的記錄,排序前後相對位置不變。不穩定...

匯流排的基本概念及分類

匯流排的基本概念及分類 my blog something 匯流排 連線多個部件的資訊傳輸線,是各部件共享的傳輸介質。在某一時刻,只允許有乙個部件向匯流排傳送資訊,而多個部件可以同時從匯流排上接受相同的資訊。匯流排是由許多傳輸線或通路組成,每條線都可以一位一位地傳輸二進位制 若干條傳輸線可以同時傳輸...