navicat設置mysql索引

設計表中: 

 索引種類:

1. Fulltext 全文本搜索索引:用於搜索長篇文章。

2. Unique 唯一索引:  

  1. 主鍵索引:primary key :加速查找+約束(不爲空且唯一)

  2. 唯一索引:unique:加速查找+約束 (唯一)

3. 聯合索引:

  1. -primary key(id,name):聯合主鍵索引

  2. -unique(id,name):聯合唯一索引

  3. -index(id,name):聯合普通索引

4. Normal 普通索引:加快搜索。

5. Spatial 空間索引。

索引功能:

1. 加快搜索;

2. mysql中的primary key,unique,聯合唯一也都是索引,這些索引除了加速查找以外,還有約束的功能

索引的兩大類型hash與btree:

  1. #我們可以在創建上述索引的時候,爲其指定索引類型,分兩類

  2. hash類型的索引:查詢單條快,範圍查詢慢

  3. btree類型的索引:b+樹,層數越多,數據量指數級增長(我們就用它,因爲innodb默認支持它)

  4. #不同的存儲引擎支持的索引類型也不一樣

  5. InnoDB 支持事務,支持行級別鎖定,支持 B-tree、Full-text 等索引,不支持 Hash 索引;

  6. MyISAM 不支持事務,支持表級別鎖定,支持 B-tree、Full-text 等索引,不支持 Hash 索引;

  7. Memory 不支持事務,支持表級別鎖定,支持 B-tree、Hash 等索引,不支持 Full-text 索引;

  8. NDB 支持事務,支持行級別鎖定,支持 Hash 索引,不支持 B-tree、Full-text 等索引;

  9. Archive 不支持事務,支持表級別鎖定,不支持 B-tree、Hash、Full-text 等索引;

1)索引方法 btree  可以用於“ >、 <  、=”查詢 ,如果查id=1000的數據 建立索引後 二分查找最多13次就可以查出相應的數據;

2)hash 不能做order by排序 不能做 用like模糊查詢。

慢查詢優化的基本步驟

0.先運行看看是否真的很慢,注意設置SQL_NO_CACHE

1.where條件單表查,鎖定最小返回記錄表。這句話的意思是把查詢語句的where都應用到表中返回的記錄數最小的表開始查起,單表每個字段分別查詢,看哪個字段的區分度最高

2.explain查看執行計劃,是否與1預期一致(從鎖定記錄較少的表開始查詢)

3.order by limit 形式的sql語句讓排序的表優先查

4.瞭解業務方使用場景

5.加索引時參照建索引的幾大原則

6.觀察結果,不符合預期繼續從0分析

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章