Mysql中索引的 建立,檢視,刪除,修改

2021-09-10 22:08:46 字數 3594 閱讀 7568

建立索引

mysql建立索引的語法如下:

1

2

3

create[unique|fulltext|spatial]indexindex_name

[using index_type]

ontable_name (index_col_name,...)

其中對應的語法變數資訊如下:

[unique|fulltext|spatial]

中括號中的這三個關鍵字表示建立的索引型別,它們分別表示唯一索引、全文索引、空間索引三種不同的索引型別。如果我們不指定任何關鍵字,則預設為普通索引。

index_name

index_name表示索引的名稱,由使用者自行定義,以便於以後對該索引進行修改等管理操作。

index_type

index_type表示索引的具體實現方式,在mysql中,有兩種不同形式的索引——btree索引和hash索引。在儲存引擎為myisam和innodb的表中只能使用btree,其預設值就是btree;在儲存引擎為memory或者heap的表中可以使用hash和btree兩種型別的索引,其預設值為hash。

index_col_name

index_col_name表示需要建立索引的欄位名稱,我們還可以針對多個字段建立復合索引,只需要在多個欄位名稱之間以英文逗號隔開即可。

此外,對於char或varchar型別的字段,我們還可以只使用字段內容前面的一部分來建立索引,只需要在對應的欄位名稱後面加上形如(length)的指令即可,表示只需要使用字段內容前面的length個字元來建立索引。在這裡,我們以user表的username欄位(型別為varchar(50))為例,使用username欄位的6個字元字首來建立索引。

1

createindexidx_user_usernameonuser(username(6));

由於多數字段的前6個字元通常不同,所以此索引不會比使用欄位的全部內容建立的索引速度慢很多。另外,使用欄位的一部分建立索引可以使索引檔案大大減小,從而節省了大量的磁碟空間,有可能提高insert操作的速度。

在mysql中,字首長度最大值為255位元組。對於儲存引擎為myisam或innodb的資料表,字首最長為1000位元組。

必須注意的是,在mysql中,對於text和blob這種大資料型別的字段,必須給出字首長度(length)才能成功建立索引。

備註1:上述建立索引的語法還具有以下變體:

1

2

altertabletable_name

add[unique|fulltext|spatial]indexindex_name (index_col_name,...) [using index_type]

備註2:在mysql中,只有當資料表的儲存引擎為myisam, innodb或bdb型別時,你才能向具有null值的列或者資料型別為text或blob的列新增索引。

刪除索引

在mysql中刪除索引的方法非常簡單,其完整語法如下:

1

2

3

--刪除指定表中指定名稱的索引

altertabletable_name

dropindexindex_name;

在這裡,我們編寫sql語句將上面建立索引的例子中的索引idx_user_username刪除掉,**詳情如下:

1

2

3

--刪除名稱為idx_user_username的索引

altertableuser

dropindexidx_user_username;

修改索引

在mysql中並沒有提供修改索引的直接指令,一般情況下,我們需要先刪除掉原索引,再根據需要建立乙個同名的索引,從而變相地實現修改索引操作。

1

2

3

4

5

--先刪除

altertableuser

dropindexidx_user_username;

--再以修改後的內容建立同名索引

createindexidx_user_usernameonuser(username(8));

檢視索引

在mysql中,要檢視某個資料庫表中的索引也非常簡單,只需要使用以下兩個命令中的任意一種即可。

1

2

3

4

--如果檢視索引前,沒有使用user db_name等命令指定具體的資料庫,則必須加上from db_name

showindexfromtable_name [fromdb_name]

--如果檢視索引前,沒有使用user db_name等命令指定具體的資料庫,則必須加上db_name.字首

showindexfrom[db_name.]table_name

posted @

2018-02-23 10:52

edwinchan 閱讀(

...)

編輯收藏

MySQL索引 檢視 建立 刪除

1 索引型別 建立索引時,可規定索引能否包含重複值。如不包含,則索引應建立為primary key 或 unique 索引。對於單列惟一性索引,這保證單列不包含重複的值。對於多列惟一性索引,保證多個值的組合不重複。primary key 索引和 unique 索引非常類似。事實上,primary k...

MySQL索引 檢視 建立 刪除

1 索引型別 建立索引時,可規定索引能否包含重複值。如不包含,則索引應建立為primary key 或 unique 索引。對於單列惟一性索引,這保證單列不包含重複的值。對於多列惟一性索引,保證多個值的組合不重複。primary key 索引和 unique 索引非常類似。事實上,primary k...

MySQL索引 檢視 建立 刪除

1 索引型別 建立索引時,可規定索引能否包含重複值。如不包含,則索引應建立為primary key 或 unique 索引。對於單列惟一性索引,這保證單列不包含重複的值。對於多列惟一性索引,保證多個值的組合不重複。primary key 索引和 unique 索引非常類似。事實上,primary k...