什么是索引
- 幫助Mysql高效獲取資料的資料結構
- 索引就是資料結構
- 類似新華字典的索引目錄,可以通過索引目錄快速查到你想要的字
- 排好序的快速查找資料
為什么要建立索引
- 提高查詢效率 沒有排序之前一個一個往后找 通過索引進行排序之后,可以直接定義到想要的位置
- 排好序的快速查找資料結構-->就是索引
優勢
- 索引類似大學圖書館建立的書目索引,提高資料檢索的效率,降低資料庫的IO成本
- 通過索引對資料項進行排序,降低資料排序成本,降低了CPU的消耗
劣勢
- 一般來說, 索引本身也很大, 索引往往以檔案的形式存盤到磁盤上
- 索引也是一張表,該表保存了主鍵與索引欄位,并指向物體表的記錄.所以索3引也是要占磁盤空間的
- 雖然索引提高了查詢速度,但是會降低更新表的速度.
- 因為更新表時, MYSQL不僅要保存資料,還要保存一下索引檔案每次更新添加了索引列的欄位,
- 會調整因為更新所帶來的鍵值變化后索引的資訊
索引分類
- 單值索引
一個索引只包含間個列,一個表可以有多個單值索引 一般來說, 一個表建立索引不要超過5個- 唯一索引 索引列的值必須唯一,但允許有空值
- 復合索引 一個索引包含多個列
- 全文索引
MySQL全文檢索是利用查詢關鍵字和查詢列內容之間的相關度進行檢索, 可以利用全文索引來提高匹配的速度,
索引為什么能快速查找資料
- 二叉查找樹
- B-Tree
- B+Tree
基本語法
創建索引
create [UNIQUE] index 索引名稱 ON 表名(欄位(長度))
alter 表名 add [unque] index[索引名稱] on(欄位(長度))
查看索引
show index from 表名
洗掉索引
drop index[索引名稱] on 表名
更改索引
添加一個主鍵,索引必須是唯一索引,不能為NULL
alter table tab_name add primary key(column_list)
創建的索引是唯一索引,可以為NULL
alter table tab_name add unque index_name(column_list)
普通索引,索引值可出現多次
alter table tab_name add index index_name(column_list)
全文索引
alter table tab_name add fulltext index_name(column_list)
索引建立選擇
適合建立索引
- 主鍵自動建立唯一索引
primary - 頻繁作為查詢條件的欄位應該創建索引
比如銀行系統銀行帳號,電信系統的手機號 - 查詢中與其它表關聯的欄位,外鍵關系建立索引
比如員工,部門外鍵 - 頻繁更新的欄位不適合建立索引
每次更新不單單更新資料,還要更新索引 - where條件里用不到的欄位不建立索引
查詢中排序的欄位,排序的欄位若通過索引去訪問將大提升排序速度
索引能夠提高檢索的速度和排序的速度
查詢中統計或分組的欄位
分組的前提是必排序
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/48507.html
標籤:MySQL
上一篇:mysql權限操作
下一篇:mysql的視圖
