數據庫中的索引是什么意思?有什么用途?
索引是一種獨立的物理存儲結構,它對數據庫表中一列或多列的值進行排序。它是表中一列或多列的值的集合,以及指向數據頁的邏輯指針的相應列表,這些數據頁在物理上標識表中的這些值。索引的作用相當于書籍的目錄,你可以根據目錄中的頁碼快速找到需要的內容。
索引是存儲表定列的值數據結構(最常見的是B樹、哈希表索引和R樹)。索引是在表的列上創建的。因此,要記住的關鍵點是,索引包含表中列的值,這些值存儲在數據結構中。請記住:索引是一種數據結構。
使用索引的全部意義在于通過減少表中需要查詢的記錄(行)數量來加快搜索速度。
假設有一個學生名單,有100條數據。詢問那個名叫小明的學生。
一般情況下,從采用小明名字的學生中選擇*。因為我們想得到每個叫小明的學生的信息,我們可以找到第一個符合條件的行后,不要停止查詢,因為可能還有其他符合條件的行。因此,我們必須逐行搜索,直到最后一行——這意味著數據庫要檢查數千行數據,才能找到那個叫小明的學生。這就是所謂的全表掃描。
假設我們在列名上創建一個B樹索引。當我們使用SQL查找名字叫小明的學生時,我們不使用。;不需要掃描整個表。相反,使用索引搜索來查找名為小明,因為索引已按字母順序排序。索引已經排序,這意味著查詢姓名會快得多,因為姓名以小都是安排在一起的。另外很重要的一點是,索引還存儲了表中相應行的指針,以獲取其他列的數據。
聚集索引和非聚集索引的區別底層?
事實上,索引可以理解為一種特殊的目錄。微軟SQLSERVER提供了兩種索引:聚集索引和非聚集索引。下面,讓說明了聚集索引和非聚集索引之間的區別:
其實我們的漢語詞典的正文本身就是一個聚簇索引。例如,如果我們想查找單詞"安",因為"安"是"安",而根據拼音對漢字進行排序的字典是從英文字母"A"并以"Z",然后是單詞"安"自然排在字典的前面。如果你能查看了所有以amp開頭的部分后,我找不到這個單詞A",說明這個詞不在你的字典里。換句話說,字典的主體本身就是一個目錄,您不必你不需要查閱其他目錄來找到你需要找的東西。的內容。我們稱這種文本內容本身為按照一定規則排列的目錄聚集索引"。
如果你遇到一個不認識的單詞,不要用。;t不知道它的發音,這時候你需要根據偏旁查找你要找的單詞,然后根據單詞后面的頁碼直接翻到一頁,找到你要找的單詞。但是,你結合部首目錄和字典找到的單詞排序,并不是真正的文本排序方法。例如,如果你查找單詞"張",我們可以看到單詞"張"在字典中部首搜索后是672,而單詞"池"在單詞"張"在字典里,但是頁碼是63及其以下。顯然,這些詞并不在單詞amp的上下張"分別是。現在連續詞"遲、張與弓弩您看到的實際上是它們在非聚集索引中的順序,這是非聚集索引中詞典體中單詞的映射。這樣我們就可以找到你需要的單詞,但是需要兩個過程,先在目錄中找到結果,然后翻到你需要的頁碼。我們稱這種分類方法為目錄是純目錄,文本是純文本非聚集索引"。