Mysql 索引原理與詳解

2022-03-08 11:42:31 字數 4980 閱讀 8993

索引的原理

索引的優點和缺點和使用原則

索引優點:

索引缺點:

使用原則:

什麼時候新增索引:

索引的分類

普通索引(index)

使用規則

1.乙個表中可以有多個index欄位

2.欄位的值可以有重複,也可以為null值。字段值無約束

3.經常把做查詢條件的字段設定為index欄位

4.index欄位的key標誌為:mul

建立普通索引(有三種方法)

方法1:建立表時建立索引index

create

table

student(

id int

, name varchar(25

), score float(5,2

),index

(name), # 建立name索引

index

(score) # 建立score索引

);方法2:建立表後建立索引index:索引名一般和欄位名一樣,只要自己能認出就行,可以隨便起名。

mysql

>

create

index 索引名 on

表名(欄位名)

mysql

>

create

index name on

student(name);

方法3:建立表後建立索引index

mysql

>

alter

table 表名 add

index

索引名(欄位名);

mysql

>

alter

table student add

index

(name);

mysql

>

alter

table student add

index

name6(name);

檢視普通索引:key一列就是索引的列,我們會發現在name和score有值mul。

mysql

>

desc

表名;

mysql

>

desc

student; # key標誌為:mul

mysql

> show index

from

表名; # key_name值為索引名

mysql

> show index

from

student\g; # 如果欄位名過多,就新增乙個\g。

刪除普通索引:刪除普通索引只能乙個乙個刪除

mysql

>

drop

index 索引名 on

表名;mysql

>

drop

index name6 on student;

唯一索引(unique)

使用規則

1.乙個表中可以有多個unique欄位

2.unique欄位的值不允許重複,可以為空值null

3.unique的key標誌是uni

建立唯一索引(基本等同index建立)

方法1:建立表時建立索引

create

table

student(

id int,

name

varchar(25

), score

float(5,2

),

unique

(name),

unique

(score)

);

方法2:建立表後建立索引:索引名一般和欄位名一樣,只要自己能認出就行,可以隨便起名。

mysql

>

create

unique

index 索引名 on

表名(欄位名);

方法3:建立表後建立索引

mysql

>

alter

table student add

unique

(name);

mysql

>

alter

table student add

unique

name6(name);

mysql

>

alter

table student add

unique

index

(name);

mysql

>

alter

table student add

unique

index

name6(name);

檢視唯一索引

mysql

>

desc

表名;

mysql

> show index

from

表名;刪除唯一索引

mysql

>

drop

index 索引名 on 表名;

主鍵索引(primary key)

外來鍵索引(foreign key)

全文索引(fulltext)

使用須知

1.在mysql5.6以下,只有myisam引擎表支援全文檢索。在mysql5.6以上innodb引擎表也提供支援全文檢索。

2.在mysql5.6以下,目前只支援英文本元的全文搜尋,不支援中文全文索引,原因很簡單:與英文不同,中文的文字是連著一起寫的,中間沒有mysql能找到分詞的地方。

3.相應字段建立fulltext索引,只能在char、varchar

、text型別欄位上使用全文索引。

4.預設搜尋是不分大小寫,若要分大小寫,columne 的 character

set要從utf8改成utf8_bin。

5.match(title, content)裡的字段必須和fulltext(title, content)裡的字段一模一樣。

6.全文索引,就是在一堆文字中,通過其中的某個關鍵字等,就能找到該欄位所屬的記錄行。

建立全文索引

方法1:建立表時建立全文索引

create

table

article (

id int auto_increment not

null

primary

key,

title

varchar(200

), body

text

, fulltext(title, body)

) engine

=myisam;

方法2:建立表後建立全文索引

mysql

>

alter

table 表名稱 add fulltext index

索引名稱 (欄位名1,欄位名2)

mysql

>

alter

table article add fulltext index

(body);

mysql

>

alter

table article add fulltext index

(title, body);

方法3:建立表後建立全文索引

mysql

>

create fulltext index 索引名稱 on

表名稱(欄位名1,欄位名2)

使用全文索引

mysql

>

select

*from 表名稱 where match(欄位名) against('

條件字串1*')

mysql

>

select

*from 表名稱 where match(欄位名) against('

條件字串1'in

boolean mode)

mysql

>

select

*from article where match(title) against('

中華**

') ;

mysql

>

select

*from article where match(title,body) against('

杜月笙'

);刪除全文索引

mysql

>

drop

index 索引名稱 on

表名稱;

重建索引:在資料庫執行了較長時間後,索引都有損壞的可能

mysql

> repair table

表名稱 quick;

全文索引變數值查詢

mysql

> show variables like

'ft%

';

1、檢視表的索引

mysql> show index from table_name(表名);

mysql> show index from user;

mysql> show index from user\g;

2、刪除表的索引

MySQL 索引與索引原理

本人菜鳥一枚,如有理解不對,請大神多多指正!一 索引 1 什麼是索引?答 索引類似於一本書的目錄,便於資料快速高效的查詢,也可以解釋為資料按照某個特定的規則去儲存排序資料 2 索引的型別?答 索引可以分為 普通索引,唯一索引,主鍵索引和組合索引 2.1 普通索引 最基本的一種索引方式,沒有什麼限制 ...

MySQL聚集索引詳解 mysql 索引詳解

直接起飛 1.什麼是索引?索引是幫助mysql高效獲取資料的排好序的資料結構。2.索引的資料結構?為什麼選這種結構?假設我們現在這裡有一張表 以下情況都是innodb儲存引擎 idnumber 如果mysql沒有索引這種結構,那麼我們如果查詢number為51的這行記錄,那麼mysql就要從上往下掃...

MySQL聚集索引詳解 mysql索引詳解

資料結構分,有b tree索引 b tree 雜湊索引 r tree索引等。按資料塊的順序和索引節點的邏輯順序是否一致可以分為聚集索引和非聚集索引。聚集索引由於物理塊連續,在範圍掃瞄的時候可以減少磁頭尋道時間,因而比非聚集索引高效。幾種索引型別的選擇 primary 主鍵索引。unique 唯一索引...