資料庫的優化之建立索引,以及SQL

2021-10-05 07:12:41 字數 1921 閱讀 3666

在資料庫中,索引的含義與日常意義上的「索引」一詞並無多大區別(想想小時候查字典),它是用於提高資料庫表資料訪問速度的資料庫物件。

a)索引可以避免全表掃瞄。多數查詢可以僅掃瞄少量索引頁及資料頁,而不是遍歷所有資料頁。

b)對於非聚集索引,有些查詢甚至可以不訪問資料頁。

c)聚集索引可以避免資料插入操作集中於表的最後乙個資料頁。

d)一些情況下,索引還可用於避免排序操作。

1.資料庫索引

目的:加快對錶中記錄的查詢或排序

優 點 :迅速

2.三種索引

根據資料庫的功能,可以在資料庫設計器中建立三種索引:唯一索引、主鍵索引和聚集索引。有關資料庫所支援的索引功能的詳細資訊,請參見資料庫文件。

唯一索引

唯一索引是不允許其中任何兩行具有相同索引值的索引。當現有資料中存在重複的鍵值時,大多數資料庫不允許將新建立的唯一索引與表一起儲存。資料庫還可能防止新增將在表中建立重複鍵值的新資料。例如,如果在employee表中職員的姓(lname)上建立了唯一索引,則任何兩個員工都不能同姓。

主鍵索引

資料庫表經常有一列或多列組合,其值唯一標識表中的每一行。該列稱為表的主鍵。在資料庫關係圖中為表定義主鍵將自動建立主鍵索引,主鍵索引是唯一索引的特定型別。該索引要求主鍵中的每個值都唯一。當在查詢中使用主鍵索引時,它還允許對資料的快速訪問。

聚集索引

在聚集索引中,表中行的物理順序與鍵值的邏輯(索引)順序相同。乙個表只能包含乙個聚集索引。如果某索引不是聚集索引,則表中行的物理順序與鍵值的邏輯順序不匹配。與非聚集索引相比,聚集索引通常提供更快的資料訪問速度。聚集索引和非聚集索引的區別,如字典預設按字母順序排序,讀者如知道某個字的讀音可根據字母順序快速定位。因此聚集索引和表的內容是在一起的。如讀者需查詢某個生僻字,則需按字典前面的索引,舉例按偏旁進行定位,找到該字對應的頁數,再開啟對應頁數找到該字。這種通過兩個地方而查詢到某個字的方式就如非聚集索引。

3.索引的儲存

一條索引記錄中包含的基本資訊包括:鍵值(即你定義索引時指定的所有欄位的值)+邏輯指標(指向資料頁或者另一索引頁)。

當你為一張空表建立索引時,資料庫系統將為你分配乙個索引頁,該索引頁在你插入資料前一直是空的。此頁此時既是根結點,也是葉結點。每當你往表中插入一行資料,資料庫系統即向此根結點中插入一行索引記錄。當根結點滿時,資料庫系統大抵按以下步驟進行**:

a)建立兩個兒子結點

b)將原根結點中的資料近似地拆成兩半,分別寫入新的兩個兒子結點

c)根結點中加上指向兩個兒子結點的指標

通常狀況下,由於索引記錄僅包含索引字段值(以及4-9位元組的指標),索引實體比真實的資料行要小許多,索引頁相較資料頁來說要密集許多。乙個索引頁可以儲存數量更多的索引記錄,這意味著在索引中查詢時在i/o上佔很大的優勢,理解這一點有助於從本質上了解使用索引的優勢。

4.索引優缺點

優點:建立索引可以大大提高系統的效能。

1):通過建立唯一性索引,可以保證資料庫表中每一行資料的唯一性。

2):可以大大加快資料的檢索速度,這也是建立索引的最主要的原因。

3):可以加速表和表之間的連線,特別是在實現資料的參考完整性方面特別有意義。

4):在使用分組和排序子句進行資料檢索時,同樣可以顯著減少查詢中分組和排序的時間。

5):通過使用索引,可以在查詢的過程中,使用優化隱藏器,提高系統的效能。

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

2):索引需要佔物理空間,除了資料表佔資料空間之外,每乙個索引還要佔一定的物理空間,如果要建立聚簇索引,那麼需要的空間就會更大。

3):當對表中的資料進行增加、刪除和修改的時候,索引也要動態的維護,這樣就降低了資料的維護速度。

資料庫建立索引以及索引失效問題

運算元據庫索引能起到優化資料庫查詢,提高查詢效率的作用。並且對也稍微大一點的資料量的服務來說,索引的建立是必須的,也是關鍵的。但是索引也要合理應用,不要遇到查詢就建索引,也不能亂建。如果造成索引失效那還不如不建。索引失效有的時候是因為自己的語句問題造成的。下面是幾種造成索引失效的幾種原因,一 以下的...

資料庫索引以及exists,in的學習

本文分為兩個部分,第一部分是談聚簇索引和非聚簇索引,第二部分談sql中exists和in的用法 第一部分 首先這兩個都是索引,索引一般用在表中某些需要頻繁讀取的字段上,這是考慮到對錶的寫操作時要同時更新這些索引,有效能損耗。聚簇索引 如果有n條資料,就有n個索引項,以b 樹方式存在磁碟上。葉子節點存...

Mysql之如何建立索引以及組合索引

資料庫中為何要建立索引?這個問題對於做做簡單實驗的學生來說似乎並不需要過於了解,但是,如果處理的資料達到百萬以及以上的時候,合適的索引就能夠體現出很強大的優勢 mysql預設使用b 樹索引 建立索引的三種方式 三種方式 1.create index index name on table name ...