sql資料庫中什麼情況該加索引index?
- 理論上任何錶都需要索引(index),有的表需要一個索引,有的表需要多個索引以及複合索引,和應用場景有關
- 主鍵也是索引
- 索引並不是越多越好。索引會有存儲空間得開銷,以及增刪改時維護索引的開銷。因而業務表(頻繁增刪改)索引盡量精簡,而分析表(各種維度的查詢)索引會複雜的多的多。
首先數據量,小的數據量不需要加
之後頻繁對錶進行更新數據不需要加
反過來,數據量大的,唯一性的,查詢頻繁的數據表中的欄位,就適合加
簡單粗暴的話:哪個欄位查詢,或哪個欄位排序,哪個欄位,或在where條件中用,就給哪個欄位加
首先還是要理解一下,索引的機制是怎樣的,為什麼會有索引。
一般來說,對表中數據的操作,分為增、刪、改、查。
建索引,是為了提高查詢效率的。
而對增、刪、改的處理效率,都是有反向作用的。
所以還是要看你的使用場景。
如果是需要提高查詢效率,而適應的降低一些增、刪、改的效率,那麼加索引是合理的。
具體在哪些欄位上添加索引,還是要看你的查詢需求。
一般來說,在查詢條件上添加索引,可以明顯提高查詢的效率。
可以看下下面這個視頻:
第22課:極速的索引強哥的視頻 · 137 播放讀場景頻率高於寫入場景,同時數據表裡的數據量非常大,資料庫伺服器配置無法滿足響應需求的時候
簡單來說就是where條件後面的列。
事務處理的一個典型應用是,給定一個關於某一/幾個列的條件表達式,找到表中符合條件的行,然後返回行數據或更新行數據。
如果相關列有索引,那麼通過比較少的幾次磁碟i/o,就可以定位到符合條件的若干行。
相反,如果相關列沒有索引,那麼需要掃描全表才能定位到符合條件的行。
如此。
推薦閱讀: