索引的概念:
索引是一個分散存盤的資料結構(檢索)對資料庫表中一列或多列的值進行排序
為什么要用索引?
- 索引能極大的減少存盤引擎需要掃描的資料量
- 索引可以把隨機IO變成順序IO
- 索引可以幫助我們進行分組,排序操作時,避免使用臨時表
聚集索引:
資料庫表行中資料的物理順序與鍵值的邏輯(索引)順序相同
輔助索引末尾指向主鍵索引,然后通過主鍵索引找值
如果innodb沒有建索引,默認會創建一個隱式主鍵索引 6bit
只要是索引是連續的,那么資料在存盤介質上的存盤位置也是連續的
聯合索引
例如創建的索引是 [name,phone]
- 經常用的列優先 [最左匹配原則]
- 選擇性高的優先 [離散度高原則 ]
- 寬度小的列優先 [最少空間原則]
列的離散型:
count(distinct column):count(column)
比例越大離散性越好,離散性越好選擇性越好
最左匹配原則:
對索引中關鍵字進行計算,一定是從左往右一次進行,且不可跳過
覆寫索引:
如果查詢列克通過索引節點中的關鍵字直接回傳,可減少資料庫IO,將隨機IO變為順 序IO,提高查詢
索引的規范:
- 索引列的資料長度能少則少,
- 索引一定不是越多越好,越全越好,一定建合適的,欄位不要太大, 比如phoneNum是11位即可
- 建索引,不允許該欄位為空
- 匹配到前綴可用到索引Like 999%
- Where條件中Not in和 <>無法使用索引
- 匹配范圍值,order by 也可以用到索引
- 多用指定列查詢,只回傳自己想要的資料列,少用select *
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/127260.html
標籤:MySQL
上一篇:MYSQL常用命令集
