MySql索引使用策略

CoolYYD發表於2020-11-13

MySql索引

索引優點

1.可以通過建立唯一索引或者主鍵索引,保證資料的唯一性.
2.提高檢索的資料效能
3.在表連線的連線條件 可以加速表與表直接的相連 
4.建立索引,在查詢中使用索引 可以提高效能

索引缺點

1.在建立索引和維護索引 會耗費時間,隨著資料量的增加而增加
2.索引檔案會佔用物理空間,除了資料表需要佔用物理空間之外,每一個索引還會佔用一定的物理空間
3.當對錶的資料進行 INSERT,UPDATE,DELETE 的時候,索引也要動態的維護,這樣就會降低資料的維護速度,

(建立索引會佔用磁碟空間的索引檔案。一般情況這個問題不太嚴重,但如果你在一個大表上建立了多種組合索引,索引檔案的會膨脹很快)。

使用索引需要注意的地方

1.在經常需要搜尋的列上,可以加快索引的速度
2.主鍵列上可以確保列的唯一性
3.在表與表的而連線條件上加上索引,可以加快連線查詢的速度
4.在經常需要排序(order by),分組(group by)和的distinct 列上加索引 可以加快排序查詢的時間,  (單獨order by 用不了索引,索引考慮加where 或加limit)
5.在一些where 之後的 < <= > >= BETWEEN IN 以及某個情況下的like 建立欄位的索引(B-TREE)

6.like語句的 如果你對nickname欄位建立了一個索引.當查詢的時候的語句是 nickname lick '%ABC%' 那麼這個索引講不會起到作用.而nickname lick 'ABC%' 那麼將可以用到索引

7.索引不會包含NULL列,如果列中包含NULL值都將不會被包含在索引中,複合索引中如果有一列含有NULL值那麼這個組合索引都將失效,一般需要給預設值0或者 ' '字串

8.使用短索引,如果你的一個欄位是Char(32)或者int(32),在建立索引的時候指定字首長度 比如前10個字元 (前提是多數值是唯一的..)那麼短索引可以提高查詢速度,並且可以減少磁碟的空間,也可以減少I/0操作.

9.不要在列上進行運算,這樣會使得mysql索引失效,也會進行全表掃描

10.選擇越小的資料型別越好,因為通常越小的資料型別通常在磁碟,記憶體,cpu,快取中 佔用的空間很少,處理起來更快

什麼情況下不建立索引

1.查詢中很少使用到的列 不應該建立索引,如果建立了索引然而還會降低mysql的效能和增大了空間需求.
2.很少資料的列也不應該建立索引,比如 一個性別欄位 0或者1,在查詢中,結果集的資料佔了表中資料行的比例比較大,mysql需要掃描的行數很多,增加索引,並不能提高效率
3.定義為text和image和bit資料型別的列不應該增加索引,
4.當表的修改(UPDATE,INSERT,DELETE)操作遠遠大於檢索(SELECT)操作時不應該建立索引,這兩個操作是互斥的關係

相關文章