高分子物理材料碩士是如何跨專業拿到頭條美團開發崗位offer的?這篇文章告訴你
阿新 • • 發佈:2021-01-29
技術標籤:資料庫
索引是什麼
索引(index)是在資料庫表的欄位中新增,是為了提高查詢效率存在的一種機制。
索引相當於書的目錄,為了縮小搜尋範圍而存在的一種機制。想要查詢表中的資料,有索引會精準查詢,效率更高。
任何資料庫中,主鍵會自動新增索引物件。
任何資料庫中,任何一張表中一行記錄在硬碟上儲存都有一個硬碟的物理儲存編號。
在MySQL中,索引是一個單獨的物件,不同的儲存引擎儲存方式不同。
一張表中索引個數
一張表中一個欄位可以新增一個索引,也可以多個欄位聯合起來新增索引。
mysql查詢方式
- 全表查詢
- 按照索引檢索。
索引也要排序
索引排序和TreeSet一樣。底層是自平衡二叉樹。遵循左小右大的原則,採用中序的遍歷方式。中序就是中左右的方式。
哪裡新增索引
在MySQL中,主鍵上以及unique欄位上都會自動新增索引。
- 資料量龐大就新增索引,這個和硬體相關,硬體越牛逼,就不需要建立索引。
- 該欄位經常出現在where 後面,以條件的形式存在。
- 該欄位很少DML操作(insert,update,delerte),就要新增索引。
- 子段的唯一性越高,新增索引查詢效率越高。
建立(新增)索引(index)
--給單一欄位新增索引
create index 索引名 on 表名(欄位);
--給多個欄位新增聯合索引
create index 索引名 on 表名(欄位1,欄位2...);
刪除索引
drop index 索引名 on 表名;
--這樣就刪除了一張表中某個索引
檢視一個SQL語句是否使用索引
explain select * from t_user where name = 'zhangsan';
--explain 加上查詢語句
--查詢語句前面加上explain
索引失效
- 模糊查詢以%開頭。例如
select name from t_user where name like '%san';
- .or兩邊欄位都有索引才會用索引,只要有一個沒有索引,那麼就不會優先使用索引查詢。
- 很多時候可以讓索引失效…請參考其他文章,視訊等。