一、索引的類型
mysql索引的四種類型:主鍵索引、唯一索引、普通索引和全文索引。通過給字段添加索引可以提高數據的讀取速度,提高項目的並發能力和抗壓能力。索引優化時mysql中的一種優化方式。索引的作用相當於圖書的目錄,可以根據目錄中的頁碼快速找到所需的內容。
主鍵索引:
主鍵是一種唯一性索引,但它必須指定為PRIMARY KEY,每個表只能有一個主鍵。
alert table tablename 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)或迅搜<、code>技術處理中文。
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: 字段內容不是頻繁變化。
