1. 程式人生 > 其它 >控制代碼(二)

控制代碼(二)

MySql官方對索引的定義為:索引是幫助Mysql高效獲取資料的資料結構

可以簡單理解為:排好序的快速查詢資料結構

優勢:提高資料檢索的效率,降低資料庫的IO成本

   降低資料排序的成本,降低了CPU的消耗

劣勢:實際上索引也是一張表,該表儲存了主鍵與索引欄位,並指向實體表的記錄,所以索引列也是要佔用空間的

   雖然索引大大提高了查詢速度,但是同時也會降低更新表的速度,如對錶進行Insert、UpDate和Delete。因為更新表時,Mysql不僅要儲存資料

   還要儲存索引檔案因為更新所帶來的的鍵值變化後的索引資訊

   索引只是提高效率的一個因素而已,如果Mysql有大資料量的表,就需要花時間研究建立最優秀的索引

索引分類

  單值索引:一個索引只包含單個列,一個表可以有多個單列索引

  唯一索引:索引列的值必須唯一,但允許有空值

  複合索引:一個索引包含多個列

建立索引的相關情況

  1)主鍵自動建立唯一索引

  2)頻繁作為查詢條件的欄位應該建立索引

  3)查詢與其他表關聯的欄位,外來鍵關係建立索引

哪些情況不建立索引

  1)表記錄太少

  2)經常增刪改的表

  3)資料重複且分佈平均的表字段(比如國籍,大家都是中國,為此欄位建立索引就沒必要了)

  4)頻繁更新的欄位不適合建立索引

  5)where條件裡用不到的欄位不建立索引

  6)