3 回答

TA貢獻1833條經驗 獲得超4個贊
基本上,表上的索引就像書中的索引(名稱來自的位置):
假設你有一本關于數據庫的書,你想找一些關于存儲的信息。沒有索引(假設沒有其他幫助,例如目錄),您必須逐個瀏覽頁面,直到找到主題(即a full table scan
)。另一方面,索引有一個關鍵字列表,所以你可以參考索引,看看storage
第113-120,231和354頁上提到的那個。然后你可以直接翻到這些頁面,而無需搜索(這是一個搜索索引,有點快)。
當然,索引的有用性取決于很多東西 - 一些例子,使用上面的明喻:
如果您有一本關于數據庫的書并將“數據庫”這個詞編入索引,您會看到它在1-59,61-290和292到400頁中提到過。在這種情況下,索引沒有多大幫助,它可能會更快地逐頁瀏覽(在數據庫中,這是“差的選擇性”)。
對于一本10頁的書,制作一個索引是沒有意義的,因為你可能最終得到一個10頁的書,前面有一個5頁的索引,這只是愚蠢的 - 只需掃描10頁并完成它。
索引也需要有用 - 通常沒有必要索引例如每頁字母“L”的頻率。

TA貢獻1777條經驗 獲得超10個贊
基本上,索引是按順序排序的所有鍵的映射。按順序列表,然后它可以執行以下操作,而不是檢查每個鍵:
1:進入列表中間 - 是高還是低于我正在尋找的?
2:如果更高,則進入中間和底部之間的中間位置,如果是低位,中位和頂部
3:更高還是更低?再次跳到中間點等
使用該邏輯,您可以在大約7個步驟中找到排序列表中的元素,而不是檢查每個項目。
顯然有復雜性,但這給了你基本的想法。
添加回答
舉報