一、索引的型別
mysql索引的四種型別:主鍵索引、唯一索引、普通索引和全文索引。通過給字段新增索引可以提高資料的讀取速度,提高專案的併發能力和抗壓能力。索引優化時mysql中的一種優化方式。索引的作用相當於圖書的目錄,可以根據目錄中的頁碼快速找到所需的內容。
主鍵索引:
主鍵是一種唯一性索引,但它必須指定為primary key,每個表只能有乙個主鍵。
alter table table_name add primary key (`欄位名`);
唯一索引:
索引列的所有值都只能出現一次,即必須唯一,值可以為空。
alter table table_name add primary key (`欄位名`);
普通索引 :
基本的索引型別,值可以為空,沒有唯一性的限制。
alter table table_name add index (`欄位名`);
全文索引:
全文索引的索引型別為fulltext。全文索引可以在varchar、char、text型別的列上建立。可以通過alter table或create index命令建立。對於大規模的資料集,通過alter table(或者create index)命令建立全文索引要比把記錄插入帶有全文索引的空表更快。myisam支援全文索引,innodb在mysql5.6之後支援了全文索引。
全文索引不支援中文需要借sphinx(coreseek)或迅搜技術處理中文。
alter table 表名 add fulltext(`欄位名`);
二、檢視表的所有索引和刪除
#檢視:
show indexes from `表名`;
#或show keys from `表名`;
#刪除alter table `表名` drop index 索引名;
三、索引的機制
1.為什麼我們新增完索引後查詢速度為變快?
傳統的查詢方法,是按照表的順序遍歷的,不論查詢幾條資料,mysql需要將表的資料從頭到尾遍歷一遍
在我們新增完索引之後,mysql一般通過btree演算法生成乙個索引檔案,在查詢資料庫時,找到索引檔案進行遍歷(折半查詢大幅查詢效率),找到相應的鍵從而獲取資料
2.索引的代價
2.1建立索引是為產生索引檔案的,占用磁碟空間
2.2索引檔案是乙個二叉樹型別的檔案,可想而知我們的dml操作同樣也會對索引檔案進行修改,所以效能會下降
3.在哪些column上使用索引?
3.1較頻繁的作為查詢條件字段應該建立索引
3.2唯一性太差的字段不適合建立索引,儘管頻繁作為查詢條件,例如gender性別字段
3.3更新非常頻繁的字段不適合作為索引
3.4不會出現在where子句中的字段不該建立索引
總結: 滿足以下條件的字段,才應該建立索引.
a: 肯定在where條經常使用 b: 該字段的內容不是唯一的幾個值 c: 字段內容不是頻繁變化。
四、檢視索引的使用情況
show status like '%handler_read%' ;
handler_read_key:這個值越高越好,越高表示使用索引查詢到的次數。
handler_read_rnd_next:這個值越高,說明查詢低效。
MySQL索引(2)常見索引型別
聚簇索引也稱為主鍵索引,其索引樹的葉子節點中存的是整行資料,表中行的物理順序與鍵值的邏輯 索引 順序相同。乙個表只能包含乙個聚集索引。因為索引 目錄 只能按照一種方法進行排序。非聚簇索引也稱為普通索引,其索引樹的葉子節點中存的是主鍵的值。mysql回表 如果語句是 select from user ...
mysql索引框架 MySQL架構和MySQL索引
1.mysql架構 1.1邏輯架構圖 1.1.1connection pool 連線池 管理緩衝使用者連線,執行緒處理等需要快取的需求。負責監聽對mysql server的各種請求,接收連線請求,所有連線請求到執行緒管理模組。每乙個連線上mysql server的客戶端請求都會被分配 或建立 乙個連...
mysql索引型別介紹 mysql索引型別介紹
索引型別介紹 主鍵索引 primary key 要求關鍵字不能重複,也不能為null,同時增加主鍵約束 主鍵索引定義時,不能命名 唯一索引 unique index 要求關鍵字不能重複,同時增加唯一約束 普通索引 index 對關鍵字沒有要求 全文索引 fulltext key 關鍵字的 不是所有欄...