數據索引學習(1)

索引一種排好序的快速查詢的數據結構,用於排序和查詢。索引是獨立於數據的數據結構,佔具了必定的物理存儲,並會常常的性維護自身的數據。咱們日常所說的索引,若是沒有特別指明,都是指BTree(不必定是二叉樹)結構的索引。mysql

索引優點:查詢和排序sql

索引的劣勢:1.佔具了必定的存儲空間 2.對錶的Insert,update,delete都要維護索引表 3.數據量大的表要花時間來研究創建最優秀的索引數據結構

mysql索引結構:BTree , R-Tree ,full-text 全文索引  ,Hash索引。默認使用BTree索引併發

mysql索引分類:單值索引 , 惟一索引 , 複合索引高併發

create [unique] index indexName on table(columname(length));
drop index indexName on table
show index from table

建立索引建議:性能

  • 一張表索引不超過5個
  • 在where 及 order by 涉及的列上考慮創建索引
  • 主鍵會自動創建惟一索引
  • 頻繁做爲查詢條件的字段應該創建索引
  • 查詢中與其它表關聯的字段,外鍵關係創建索引
  • 單值/複合索引的選擇問題--在高併發下傾向建立組合索引
  • 查詢中排序的字段,排序字段若經過索引去訪問將大大提升排序速度
  • 查詢中統計或者分組的字段創建索引

不建索引狀況mysql索引

  • 頻繁更新的字段不適合建立索引
  • where條件裏用不到的字段不用索引
  • 表中數據量少的沒必要建立索引,mysql官方說數據量到500萬的狀況下性能開始降低。
  • 數據重複且分佈平均的表字段不用索引,只爲最常常查詢和最常常排序的數據列創建索引。若是某列重複的內容太多,爲其創建索引沒有太大效果
相關文章
相關標籤/搜索