MySQL資料庫索引的4大型別以及相關的索引建立

2022-03-28 02:38:15 字數 2230 閱讀 4915

這是最基本的mysql資料庫索引,它沒有任何限制。它有以下幾種建立方式:

建立索引

create index indexname on mytable(username(length)); 

如果是char,

varchar

型別,length

可以小於字段實際長度;如果是

blob

和text

型別,必須指定

length

,下同。

修改表結構

alter mytable add index [indexname] on (username(length))

建立表的時候直接指定

create table mytable( id int not null, username varchar(16) not null, index [indexname] (username(length)) );  

刪除索引的語法:

drop index [indexname] on mytable;  

它與前面的普通索引類似,不同的就是:mysql資料庫索引列的值必須唯一,但允許有空值。如果是組合索引,則列值的組合必須唯一。它有以下幾種建立方式:

建立索引

create unique index indexname on mytable(username(length)) 修改表結構

alter mytable add unique [indexname] on (username(length)) 建立表的時候直接指定

create table mytable( id int not null, username varchar(16) not null, unique [indexname] (username(length)) );  

它是一種特殊的唯一索引,不允許有空值。一般是在建表的時候同時建立主鍵索引:

create table mytable( id int not null, username varchar(16) not null, primary key(id) );  

當然也可以用 alter 命令。記住:乙個表只能有乙個主鍵。

為了形象地對比單列索引和組合索引,為表新增多個字段:

create table mytable( id int not null, username varchar(16) not null, city varchar(50) not null, age int not null );  

為了進一步榨取mysql的效率,就要考慮建立組合索引。就是將

name, city, age

建到乙個索引裡:

alter table mytable add index name_city_age (name(10),city,age); 建表時,

usernname

長度為

16,這裡用

10。這是因為一般情況下名字的長度不會超過

10,這樣會加速索引查詢速度,還會減少索引檔案的大小,提高

insert

的更新速度。

如果分別在 usernname,

city

,age

上建立單列索引,讓該錶有

3個單列索引,查詢時和上述的組合索引效率也會大不一樣,遠遠低於我們的組合索引。雖然此時有了三個索引,但

mysql

只能用到其中的那個它認為似乎是最有效率的單列索引。

建立這樣的組合索引,其實是相當於分別建立了下面三組組合mysql資料庫索引:

usernname,city,age usernname,city usernname 為什麼沒有

city

,age

這樣的組合索引呢?這是因為

mysql

組合索引

「最左字首

」的結果。簡單的理解就是只從最左面的開始組合。並不是只要包含這三列的查詢都會用到該組合索引,下面的幾個

sql就會用到這個組合

mysql

資料庫索引:

select * from mytable whree username="admin" and city="鄭州

" select * from mytable whree username="admin"

而下面幾個則不會用到:

select * from mytable whree age=20 and city="鄭州

" select * from mytable whree city="鄭州"

MySQL資料庫索引的4大型別以及相關的索引建立

以下的文章主要介紹的是mysql資料庫索引型別,其中包括普通索引,唯一索引,主鍵索引與主鍵索引,以及對這些索引的實際應用或是建立有乙個詳細介紹,以下就是文章的主要內容描述。1 普通索引 這是最基本的mysql資料庫索引,它沒有任何限制。它有以下幾種建立方式 建立索引 create index ind...

MySQL資料庫索引的4大型別以及相關的索引建立

以下的文章主要介紹的是mysql資料庫索引型別,其中包括普通索引,唯一索引,主鍵索引與主鍵索引,以及對這些索引的實際應用或是建立有乙個詳細介紹,以下就是文章的主要內容描述。1 普通索引 這是最基本的mysql資料庫索引,它沒有任何限制。它有以下幾種建立方式 建立索引 create index ind...

MySQL資料庫索引的4大型別以及相關的索引建立

此文章主要描述的是mysql資料庫索引型別其主要是可以分成4大型別,以及對mysql資料庫索引型別的實際應用與建立有相關的介紹。以下的文章主要介紹的是mysql資料庫索引型別,其中包括普通索引,唯一索引,主鍵索引與主鍵索引,以及對這些索引的實際應用或是建立有乙個詳細介紹,以下就是文章的主要內容描述。...