本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用索引的最佳實務
建置索引
將資料匯入 Amazon DocumentDB 時,您應該在匯入大型資料集之前建立索引。您可以使用 Amazon DocumentDB Index Tool
索引選擇性
我們建議您限制建立索引的欄位,其中重複值的數目會小於集合中文件總數的 1%。例如,如果您的集合包含 100,000 個文件,則只會在相同值發生 1,000 次或更少的欄位上建立索引。
選擇具有大量唯一值 (即高基數) 的索引可確保篩選操作傳回少量文件,從而在索引掃描期間產生良好的效能。高基數索引範例像是唯一索引,它可以保證相等述詞最多只能傳回單一文件。低基數索引的範例像是布林欄位,以及對一週中某天的索引。由於效能不佳,資料庫的查詢最佳化工具不太可能選擇低基數索引。同時,低基數索引會繼續消耗磁碟空間和 I/O 等資源。根據經驗法則,您應該在典型值頻率為總集合大小的 1% 或更小的字段上鎖定索引。
此外,建議只在通常用作篩選器的欄位上建立索引,並定期尋找未使用的索引。如需詳細資訊,請參閱如何分析索引用量並識別未使用的索引?。
索引對寫入資料的影響
雖然索引可以透過避免掃描集合中的每個文件來改善查詢性能,但此改進方式有所權衡。對於集合上的每個索引,每次插入、更新或刪除文件時,資料庫必須更新集合並將欄位寫入集合的每個索引。例如,如果集合有九個索引,資料庫必須先執行十次寫入,才能確認用戶端的作業。因此,每個額外的索引都會產生額外的寫入延遲、I/O,並增加整體使用的儲存。
叢集執行個體的大小必須適當,才能保留所有工作集記憶體。如此可避免從儲存磁碟區持續讀取索引頁面的需求,進而對效能造成負面影響,並產生較高的 I/O 成本。如需詳細資訊,請參閱執行個體大小。
為了獲得最佳效能,請盡量減少集合中的索引數目,只新增必要的索引,以改善常見查詢的效能。雖然工作負載有所不同,但好的指導方針是將每個集合的索引數目保持在五個或更少。
識別缺少的索引
識別缺少的索引是最佳實務,我們建議定期執行。如需詳細資訊,請參閱如何識別缺少的索引?。
識別未使用的索引
識別和移除未使用的索引是我們建議定期執行的最佳實務。如需詳細資訊,請參閱如何分析索引用量並識別未使用的索引?。