Nic Lin's Blog

喜歡在地上打滾的 Rails Developer

unique index 與 non-unique index 的效能差異

常理來說,unique index 在做查詢的時候,可以想像約等同於 SELECT 1 AS one LIMIT 1,因為不需花費力氣找尋其他相同的數據,所以理論上會快一些。

查詢計畫

舉例來說: Query plan 會在某些查詢有效的使用 unique index ,而不是普通索引

比方在某個有包含 unique index 的 table, 使用 SELECT DISTINCT, query plan 會發出一個跳過對結果進行排序並消除重複的 query plan,即便這個 query 沒有明確的用到 unique index。

其他影響

有 unique index 的部分,INSERT / UPDATE / DELETE 速度會稍微慢一些,因為在每次更動資料時都會檢查這個值是否重複。

結論

看了一些相關的資料,發現並沒有直接確定的答案,通常是取決於你的查詢內容,Query plan 會盡可能的找到可以提高性能的 index 來優化搜尋。

參考來源

Share Comments
comments powered by Disqus