MySQL key與index的區別

2021-07-14 16:40:57 字數 2442 閱讀 1549

一、key

key 是資料庫的物理結構,處於模型層面的,它包含兩層意義和作用,一是約束(偏重於約束和規範資料庫的結構完整性),二是索引(輔助查詢用的)。包括primary key, unique key, foreign key 等。

primary key 有兩個作用,一是約束作用(constraint),用來規範乙個儲存主鍵和唯一性,但同時也在此key上建立了乙個index;

unique key 也有兩個作用,一是約束作用(constraint),規範資料的唯一性,但同時也在這個key上建立了乙個index;

foreign key也有兩個作用,一是約束作用(constraint),規範資料的引用完整性,但同時也在這個key上建立了乙個index;

可見,mysql的key是同時具有constraint和index的意義,這點和其他資料庫表現的可能有區別。(至少在oracle上建立外來鍵,不會自動建立index),因此建立key也有如下幾種方式:

1.在字段級以key方式建立, 如

1

create

tablet(

id int

notnull

primary

key)

;

2.在表級以constraint方式建立,如

1

create

tablet(

idint

,constraint

pk_t_id

primary

key(id)

);3.在表級以key方式建立,如

1

create

tablet(

id int

,primary

key(id)

);其它key建立類似,但不管那種方式,既建立了constraint,又建立了index,只不過index使用的就是這個constraint或key。

二、index

index是資料庫的物理結構,處於實現層面的,它只是輔助查詢的,它建立時會在另外的表空間(mysql中的innodb表空間)以乙個類似目錄的結構儲存。

索引只是索引,它不會去約束索引的字段的行為(那是key要做的事情)。

mysql常見索引有:主鍵索引、唯一索引、普通索引、全文索引、組合索引。

1

2

3

4

5

6

7

8

9

10

primary

key(主鍵索引)

alter

table

`table_name

`add

primary

key(

`column`)

unique

(唯一索引

)alter

table

`table_name

`add

unique(`

column`)

index

(普通索引

)alter

table

`table_name

`add

index

index_name(`

column`)

fulltext

(全文索引

)alter

table

`table_name

`add

fulltext(`

column`)

組合索引

alter

table

`table_name

`add

index

index_name(`

column1`,

`column2`,

`column3`)

mysql各種索引區別:

普通索引:最基本的索引,沒有任何限制

唯一索引:與」普通索引」類似,不同的就是:索引列的值必須唯一,但允許有空值。

主鍵索引:它是一種特殊的唯一索引,不允許有空值。

全文索引:僅可用於 myisam 表,針對較大的資料,生成全文索引很耗時好空間。

組合索引:為了更多的提高mysql效率可建立組合索引,遵循」最左字首「原則。

總結:1.我們說索引分類,分為主鍵索引、唯一索引、普通索引(只有這一種才是純粹的index)等,也是基於是不是把index看作了key。比如 create table t(id int, unique index inx_tx_id (id)); –index當作了key使用。

2.最重要的也就是,不管如何描述,理解index是純粹的index,還是被當作key,當作key時則會有兩種意義或起兩種作用。

MySql Key和Index 的精簡總結

沒有索引,mysql不得不首先以第一條記錄開始並然後讀完整個表直到它找出相關的行。所有的mysql索引 primary unique和index 在b樹中儲存。字串是自動地壓縮字首和結尾空間。索引用於 快速找出匹配乙個where子句的行 當執行聯結時,從其他表檢索行 對特定的索引列找出max 或mi...

mysql key 語法 MySQL的基本語法

mysql的基本語法 crud的操作 c create 增 insert into 表名 values 將要增加的值 值的數量和表中的列數一致 insert into 表名 列名 values 給指定的列加值 其他為null,表示不知道 insert into 表名 values 將要增加的值 將要...

MySQL中Index與Key的區別

2010 03 12 admin 看似有差不多的作用,加了key的表與建立了index的表,都可以進行快速的資料查詢。他們之間的區別在於處於不同的層面上。key即鍵值,是關係模型理論中的一部份,比如有主鍵 primary key 外來鍵 foreign key 等,用於資料完整性檢否與唯一性約束等。...