mysql欄位型別索引 mysql的四種索引型別

2021-10-17 15:24:46 字數 1622 閱讀 7190

一、索引的型別

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)或迅搜技術處理中文。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欄位索引

drop table if exists auth assignment drop table if exists auth item child drop table if exists auth item drop table if exists auth rule create table a...

mysql欄位型別解析 MySQL欄位型別最全解析

前言 要了解乙個資料庫,我們必須了解其支援的資料型別。mysql 支援大量的字段型別,其中常用的也有很多。前面文章我們也講過 int 及 varchar 型別的用法,但一直沒有全面講過字段型別,本篇文章我們將把字段型別一網打盡,講一講常用字段型別的用法。常用的字段型別大致可以分為數值型別 字串型別 ...

mysql密碼字段型別 MySQL欄位型別最全解析

前言 要了解乙個資料庫,我們必須了解其支援的資料型別。mysql 支援大量的字段型別,其中常用的也有很多。前面文章我們也講過 int 及 varchar 型別的用法,但一直沒有全面講過字段型別,本篇文章我們將把字段型別一網打盡,講一講常用字段型別的用法。常用的字段型別大致可以分為 數值型別 字串型別...