1、索引的類型 mysql
mysql索引的四種類型:主鍵索引
、惟一索引
、普通索引
和全文索引
。經過給字段添加索引
能夠提升數據的讀取速度
,提升項目的併發能力和抗壓能力。索引優化
時mysql中的一種優化方式。索引的做用至關於圖書的目錄
,能夠根據目錄中的頁碼快速找到所需的內容
。算法
主鍵索引:
主鍵是一種惟一性索引,但它必須指定爲PRIMARY KEY
,每一個表只能有一個主鍵。sql
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(`字段名`);
2、查看錶的全部索引和刪除mysql索引
#查看: show indexes from `表名`; #或 show keys from `表名`; #刪除 alter table `表名` drop index 索引名;
3、索引的機制優化
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: 字段內容不是頻繁變化
。spa