Postgresql
我如何知道要為表創建哪些索引?
有沒有辦法找出最好的方法來知道要為表創建哪些索引?
簡短的經驗法則。(其中一些是自動創建的,但以後可能會手動刪除,具體取決於您的 dbms。不要假設您將始終在 PostgreSQL 上工作。)
- 索引每個主鍵。
- 索引每個外鍵。
- 索引 JOIN 子句中使用的每一列。
- 索引 WHERE 子句中使用的每一列。
- 研究您的文件以了解您的 dbms 支持的“深奧”索引選項。
每個主鍵意味著多列主鍵應該有一個覆蓋所有列的索引。如果您聲明多列主鍵,PostgreSQL 將自動創建此索引。
在許多情況下,單個多列索引比多個單列索引提供更好的性能。監控慢查詢並進行測試以確定哪個是哪個。
假設對索引的任何更改都會改善某些數據庫活動並降低其他活動。我發現擁有一組可以在更改索引之前和之後分析的 SQL 語句很有幫助。該集合包括 SELECT、INSERT、UPDATE 和 DELETE 語句。
為您的特定 dbms 研究文件是無可替代的。