索引是建的越多越好吗?
生活随笔
收集整理的這篇文章主要介紹了
索引是建的越多越好吗?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
索引是建的越多越好嗎?
明顯不是,有以下幾點:
- 數據量小的表不需要建立索引,建立會增加額外的索引開銷
- 不經常引用的列不要建立索引,因為不常用,即使建立了索引也沒有多大意義。對經常用于查詢的字段應該創建索引。
- 經常頻繁更新的列不要建立索引,因為肯定會影響插入或更新的效率
- 數據重復且分布平均的字段,因此他建立索引就沒有太大的效果(例如性別字段,是否上架等等,不適合建立索引)
- 數據變更需要維護索引,意味著索引越多維護成本越高。當對表中的數據進行增加、刪除、修改時,索引也需要動態的維護,降低了數據的維護速度。
- 更多的索引也需要更多的存儲空間,一個表中很夠創建多個索引,這些索引度會被存放到一個索引文件中(專門存放索引的地方)。
順便說一下索引的相關知識:
索引用于快速找出在某個列中有一特定值的行,不使用索引,MySQL必須從第一條記錄開始讀完整個表,直到找出相關的行,表越大,查詢數據所花費的時間就越多,所以索引還是很有用的,其中MySQL中的索引的存儲類型有兩種:BTREE、HASH,平時我們經常見到的基本都是b+樹。
MyISAM(非聚簇索引)和InnoDB(聚簇索引)存儲引擎:只支持BTREE索引, 也就是說默認使用BTREE,這也是我們經常見到的,不能夠更換MEMORY/HEAP存儲引擎:支持HASH和BTREE索引。(上面的聚簇索引和非聚簇索引,可以這么區分,聚簇索引的葉子節點就是數據節點,而非聚簇索引的葉子節點仍然是索引節點,只不過有指向對應數據塊的指針。)
索引我們分為四類來講 單列索引(普通索引,唯一索引,主鍵索引)、組合索引、全文索引、空間索引。這里我們只說說第一個和第二個。
單列索引:一個索引只包含單個列,但一個表中可以有多個單列索引。 這里不要搞混淆了。
- 普通索引:MySQL中基本索引類型,沒有什么限制,允許在定義索引的列中插入重復值和空值,純粹為了查詢數據更快一點。
- 唯一索引:索引列中的值必須是唯一的,但是允許為空值。
- 主鍵索引:是一種特殊的唯一索引,不允許有空值。
組合索引:(也叫聯合索引(多列聯合))
在表中的多個字段組合上創建的索引,只有在查詢條件中使用了這些字段的左邊字段時,索引才會被使用,使用組合索引時遵循最左前綴集合。例子如下:
聯合索引 (a,b,c) 實際建立了 (a)、(a,b)、(a,b,c) 三個索引.
?
總結
以上是生活随笔為你收集整理的索引是建的越多越好吗?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2022-2028年中国微藻行业市场调查
- 下一篇: 2022-2028年中国微型汽车市场投资