Mysql中索引的 建立,查看,刪除,修改

來源:互聯網
上載者:User

標籤:

建立索引

MySQL建立索引的文法如下:

?
123 CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name [USING index_type] ON table_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 CREATE INDEX idx_user_username ON user (username(6));

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

在MySQL中,前置長度最大值為255位元組。對於儲存引擎為MyISAM或InnoDB的資料表,首碼最長為1000位元組。

必須注意的是,在MySQL中,對於TEXT和BLOB這種大資料類型的欄位,必須給出前置長度(length)才能成功建立索引。

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

?
12 ALTER TABLE table_nameADD [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name (index_col_name,...) [USING index_type]

備忘2:在MySQL中,只有當資料表的儲存引擎為MyISAM, InnoDB或BDB類型時,你才能向具有NULL值的列或者資料類型為TEXT或BLOB的列添加索引。

刪除索引

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

?
123 --刪除指定表中指定名稱的索引ALTER TABLE table_nameDROP INDEX index_name;

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

?
123 --刪除名稱為idx_user_username的索引ALTER TABLE userDROP INDEX idx_user_username;

修改索引

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

?
12345 --先刪除ALTER TABLE userDROP INDEX idx_user_username;--再以修改後的內容建立同名索引CREATE INDEX idx_user_username ON user (username(8));

查看索引

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

?
1234 --如果查看索引前,沒有使用user db_name等命令指定具體的資料庫,則必須加上FROM db_nameSHOW INDEX FROM table_name [FROM db_name]--如果查看索引前,沒有使用user db_name等命令指定具體的資料庫,則必須加上db_name.首碼SHOW INDEX FROM [db_name.]table_name

Mysql中索引的 建立,查看,刪除,修改

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.