一、索引的型別mysql索引的四種型別:
主鍵索引
、唯一索引
、普通索引
和全文索引
。通過給字段新增索引
可以提高資料的讀取速度
,提高專案的併發能力和抗壓能力。索引優化
時mysql中的一種優化方式。索引的作用相當於圖書的目錄
,可以根據目錄中的頁碼快速找到所需的內容
。
主鍵索引:
主鍵是一種唯一性索引,但它必須指定為primary key
,每個表只能有乙個主鍵。
alert table tablename add primary key(`欄位名`)
唯一索引:
索引列的所有值都只能出現一次,即必須唯一
,值可以為空
。
alter table table_name add unique index(`欄位名`);
#alter table table_name drop index `欄位名` , add unique index(`欄位名`);#刪除舊索引再新增
普通索引 :
基本
的索引型別,值可以為空,沒有唯一性的限制。
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(`欄位名`);
二、檢視表的所有索引和刪除sql
#檢視:
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: 字段內容不是頻繁變化
。
四、檢視索引的使用情況sql
show status like '%handler_read%' ;
handler_read_key:這個值越高越好,越高表示使用索引查詢到的次數。
handler_read_rnd_next:這個值越高,說明查詢低效。
MySQL四種常用索引型別
提到mysql優化,索引優化是必不可少的。其中一種優化方式 索引優化,新增合適的索引能夠讓專案的併發能力和抗壓能力得到明顯的提公升。我們知道專案效能的瓶頸主要是在 查 select 語句,要提公升 查 這一效能,mysql索引是必不可少的。接下來總結一下mysql常見的四種索引 一.四種索引 主鍵索...
說說mysql的四種索引型別
我們都知道 mysql索引的四種型別 主鍵索引 唯一索引 普通索引和全文索引。通過給字段新增索引可以提高資料的讀取速度,提高專案的併發能力和抗壓能力。索引優化時mysql中的一種優化方式。索引的作用相當於圖書的目錄,可以根據目錄中的頁碼快速找到所需的內容,借助參考案例 www.dc3688.com ...
mysql欄位型別索引 mysql的四種索引型別
一 索引的型別 mysql索引的四種型別 主鍵索引 唯一索引 普通索引和全文索引。通過給字段新增索引可以提高資料的讀取速度,提高專案的併發能力和抗壓能力。索引優化時mysql中的一種優化方式。索引的作用相當於圖書的目錄,可以根據目錄中的頁碼快速找到所需的內容。主鍵索引 主鍵是一種唯一性索引,但它必須...