1. 程式人生 > >mysql索引型別以及適用場景

mysql索引型別以及適用場景

1.普通索引
最基本的索引,沒有任何限制
2.唯一索引
索引列的值必須唯一,但允許有空值
3.主鍵索引
主鍵索引屬於一種特殊的唯一索引,不允許有空值
4.單列索引
單個多列索引(組合索引)效率高於多個單列索引
5.最左字首(Leftmost Prefixing):多列索引
多列索引只有在where條件中含有索引中的首列欄位時才有效
例如:fname_lname_age索引,
以下的搜尋條件MySQL都將使用 :
fname_lname_age索引:firstname,lastname,age;firstname,lastname;firstname,其他情況將不使用

二、根據sql查詢語句確定建立哪種型別的索引,如何優化查詢
選擇索引列:
  a.效能優化過程中,選擇在哪個列上建立索引是最重要的步驟之一。可以考慮使用索引的主要有
  兩種型別的列:在where子句中出現的列,在join子句中出現的列。
  b.考慮列中值的分佈,索引的列的基數越大,索引的效果越好。
  c.使用短索引,如果對字串列進行索引,應該指定一個字首長度,可節省大量索引空間,提升查詢速度。
  d.利用最左字首
  e.不要過度索引,只保持所需的索引。每個額外的索引都要佔用額外的磁碟空間,並降低寫操作的效能。
  在修改表的內容時,索引必須進行更新,有時可能需要重構,因此,索引越多,所花的時間越長。
  MySQL只對一下操作符才使用索引:<,<=,=,>,>=,between,in, 以及某些時候的like(不以萬用字元%或_開頭的情形)。