資料庫建立索引(index)的注意事項

資料庫建立索引(index)的注意事項

更新於 發佈於 閱讀時間約 1 分鐘
索引(index)能提升搜尋比對資料時的效能


  • 會經常被where、order by、group by作為條件使用的欄位,建議可以考慮將其建立為索引 (index)。
如果該欄位的內容值的變化不多、不大的話,可以不用特地建立成索引。
例如該欄位是用來記錄目前程式執行到哪一個階段的流程flag,可能的內容值只有1、2、3等表示目前執行到三個階段中的哪一個階段。
沒有必要特地在這個欄位上建立索引,因為效果也不會多顯著。


  • 索引的欄位盡量不能為null或空值。


  • 如果where之後的條件有使用"OR",那麼所有OR的欄位都必須建立索引。
只有一個欄位有建立索引,但其他搜尋條件的欄位沒有建立索引的話,就沒有太大的意義。
因為還是要一筆一筆去比對。

如果是使用"AND",第一個條件欄位沒有通過就不會繼續根據第二個條件欄位去做比對查詢。但"OR"不一樣,第一個沒過,還是會根據第二個、第三個條件去搜尋,所以速度不會比較快。


  • 如果函式使用索引欄位做計算,索引就沒有意義。


  • 建立索引也是會占用空間,所以不是很常做為條件使用的欄位的話,就不要設定為索引。
avatar-img
Genos's Coding Diary的沙龍
6會員
19內容數
我的Java學習日記
留言
avatar-img
留言分享你的想法!
stderr (描述符 2) 和 stdout (描述符 1) 是獨立的檔案描述符。 重定向的順序是關鍵,因為每個重定向會即時生效,並影響之後的指令。
為何要重寫equals方法? 為何要重寫hashCode方法?
兩種方式進行物件比較,使用Comparator或使用Comparable
stderr (描述符 2) 和 stdout (描述符 1) 是獨立的檔案描述符。 重定向的順序是關鍵,因為每個重定向會即時生效,並影響之後的指令。
為何要重寫equals方法? 為何要重寫hashCode方法?
兩種方式進行物件比較,使用Comparator或使用Comparable