mysql--------四种索引类型
一、索引的類型
mysql索引的四種類型:主鍵索引、唯一索引、普通索引和全文索引。通過給字段添加索引可以提高數(shù)據(jù)的讀取速度,提高項(xiàng)目的并發(fā)能力和抗壓能力。索引優(yōu)化時(shí)mysql中的一種優(yōu)化方式。索引的作用相當(dāng)于圖書的目錄,可以根據(jù)目錄中的頁碼快速找到所需的內(nèi)容。
?
????主鍵索引:
????????主鍵是一種唯一性索引,但它必須指定為PRIMARY KEY,每個(gè)表只能有一個(gè)主鍵。
?
? 唯一索引:
????????索引列的所有值都只能出現(xiàn)一次,即必須唯一,值可以為空。
?
? 普通索引 :
????????基本的索引類型,值可以為空,沒有唯一性的限制。
?
alter table table_name add index (`字段名`);?
?? 全文索引:
????????全文索引的索引類型為FULLTEXT。全文索引可以在varchar、char、text類型的列上創(chuàng)建。可以通過ALTER TABLE或CREATE INDEX命令創(chuàng)建。對于大規(guī)模的數(shù)據(jù)集,通過ALTER TABLE(或者CREATE INDEX)命令創(chuàng)建全文索引要比把記錄插入帶有全文索引的空表更快。MyISAM支持全文索引,InnoDB在mysql5.6之后支持了全文索引。????????全文索引不支持中文需要借sphinx(coreseek)或迅搜<、code>技術(shù)處理中文。
?
二、查看表的所有索引和刪除
?
#查看:show indexes from `表名`;#或show keys from `表名`;#刪除alter table `表名` drop index 索引名;?
?
三、索引的機(jī)制
1.為什么我們添加完索引后查詢速度為變快?
??? 傳統(tǒng)的查詢方法,是按照表的順序遍歷的,不論查詢幾條數(shù)據(jù),mysql需要將表的數(shù)據(jù)從頭到尾遍歷一遍
??? 在我們添加完索引之后,mysql一般通過BTREE算法生成一個(gè)索引文件,在查詢數(shù)據(jù)庫時(shí),找到索引文件進(jìn)行遍歷(折半查找大幅查詢效率),找到相應(yīng)的鍵從而獲取數(shù)據(jù)
2.索引的代價(jià)
??? 2.1創(chuàng)建索引是為產(chǎn)生索引文件的,占用磁盤空間
??? 2.2索引文件是一個(gè)二叉樹類型的文件,可想而知我們的dml操作同樣也會(huì)對索引文件進(jìn)行修改,所以性能會(huì)下降
3.在哪些column上使用索引?
??? 3.1較頻繁的作為查詢條件字段應(yīng)該創(chuàng)建索引
??? 3.2唯一性太差的字段不適合創(chuàng)建索引,盡管頻繁作為查詢條件,例如gender性別字段
??? 3.3更新非常頻繁的字段不適合作為索引
??? 3.4不會(huì)出現(xiàn)在where子句中的字段不該創(chuàng)建索引
總結(jié): 滿足以下條件的字段,才應(yīng)該創(chuàng)建索引.
a: 肯定在where條經(jīng)常使用 b: 該字段的內(nèi)容不是唯一的幾個(gè)值 c: 字段內(nèi)容不是頻繁變化。
?
轉(zhuǎn)載于:https://www.cnblogs.com/zhangqie/p/8416164.html
總結(jié)
以上是生活随笔為你收集整理的mysql--------四种索引类型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Cesium调用Geoserver发布的
- 下一篇: bzoj4709 [Jsoi2011]柠