1. 程式人生 > >建立索引--索引的各種問題和建立索引的策略

建立索引--索引的各種問題和建立索引的策略

找到切入點

程式的輸入值為哪些,以及定義的資料子集的大小,是建立索引的基礎。

索引是一種儘快訪問“特定資料”的技術。

靠索引並不能實現對所有資料的快速訪問。

處理開銷:每當在表中插入或刪除記錄時,該表的所有索引都必須進行相應調整。每當對已建立索引的欄位進行更新時,這種調整也會發生。這種調整意味著:佔用大量CPU資源以掃描記憶體資料塊、地洞I/O操作將變動記入日誌檔案、可能引起更多的資料庫問價I/O操作,並可能引起資料庫系統進行維護儲存裝置空間分配的操作。

維護一個索引的開銷,可能比維護一張表的開銷還要大。

在大規模併發訪問的環境中,過多索引會造成資源競爭和加鎖。更新帶索引的表時,既要更新表中的資料,又要更新索引資料。於是,併發更新可能涉及的區域散佈於表的各個部分。更改實際資料意味著一連串的衝擊影響。

對支援事務處理的資料庫,大部分SQL語句要麼查出少數幾行資料,要麼處理少數幾行記錄,此時索引對提升效能價值很大。

決策支援系統的效能也在很大程度上依賴索引。

如果事務處理型資料庫的表都符合正規化的要求,需要增加索引的欄位應該很少;這些表肯定都有主鍵,,在聲明瞭主鍵欄位後,它們會被自動加上索引;同樣,具有唯一性的欄位極可能在實現完整性約束時被加上索引;

索引與目錄

書的索引和資料庫的索引相似,而目錄提供整書的機構概覽,起到與索引互補的作用。

目錄和索引之間的關鍵區別是:目錄項指示正文塊,可能是一章或是一節。

讓索引發揮作用

如果需要的是某個資料項中非常具體的資訊,就可以使用索引;但如果是想閱讀整個主題的內容,則應該使用目錄而不是索引。

匹配某索引鍵的記錄所佔的平均百分比反映了索引的可選擇性,百分比越低,索引的可選擇性就越高。

函式和型別轉換對索引的影響

索引通常使用樹(tree)結構實現