MySQL實(shí)現(xiàn)創(chuàng)建與修改索引(ALTER命令)
索引(index)分單列索引和組合索引。
- 單列索引,即一個(gè)索引只包含單個(gè)列,一個(gè)表可以有多個(gè)單列索引。
- 組合索引,即一個(gè)索引包含多個(gè)列。
創(chuàng)建索引時(shí),需要確保該索引是應(yīng)用在 SQL 查詢語(yǔ)句的條件(一般作為 WHERE 子句的條件)。
實(shí)際上,索引也是一張表,該表保存了主鍵與索引字段,并指向?qū)嶓w表的記錄。
索引的缺點(diǎn):雖然索引大大提高了查詢速度,但是卻會(huì)降低更新表的速度,如對(duì)表進(jìn)行INSERT、UPDATE和DELETE。因?yàn)楦卤頃r(shí),MySQL不僅要保存數(shù)據(jù),還要保存一下索引文件。同時(shí),建立索引會(huì)占用磁盤(pán)空間的索引文件。
一、創(chuàng)建與修改索引
創(chuàng)建索引:
CREATE INDEX indexName ON table_name (column_name)
如果是CHAR,VARCHAR類(lèi)型,length可以小于字段實(shí)際長(zhǎng)度;如果是BLOB和TEXT類(lèi)型,必須指定 length。
修改表結(jié)構(gòu)(添加索引)
ALTER table tableName ADD INDEX indexName(columnName)
創(chuàng)建表的時(shí)候直接指定
CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, INDEX [indexName] (username(length)) );
刪除索引
DROP INDEX [indexName] ON mytable;
二、ALTER 命令添加和刪除索引
有四種方式來(lái)添加數(shù)據(jù)表的索引:
ALTER TABLE tbl_name ADD PRIMARY KEY (column_list);
該語(yǔ)句添加一個(gè)主鍵,這意味著索引值必須是唯一的,且不能為NULL。
ALTER TABLE tbl_name ADD UNIQUE index_name (column_list);
該語(yǔ)句創(chuàng)建索引的值必須是唯一的(除了NULL外,NULL可能會(huì)出現(xiàn)多次)。
ALTER TABLE tbl_name ADD INDEX index_name (column_list);
添加普通索引,索引值可出現(xiàn)多次。
ALTER TABLE tbl_name ADD FULLTEXT index_name (column_list);
該語(yǔ)句指定了索引為 FULLTEXT ,用于全文索引。
以下實(shí)例為在表中添加索引:
ALTER TABLE testalter_tbl ADD INDEX (c);
還可以在 ALTER 命令中使用 DROP 子句來(lái)刪除索引:
ALTER TABLE testalter_tbl DROP INDEX c;
三、ALTER 命令添加和刪除主鍵
主鍵作用于列上(可以一個(gè)列或多個(gè)列聯(lián)合主鍵),添加主鍵索引時(shí),需要確保該主鍵默認(rèn)不為空(NOT NULL)。
實(shí)例如下:
ALTER TABLE testalter_tbl MODIFY i INT NOT NULL; ALTER TABLE testalter_tbl ADD PRIMARY KEY (i);
也可以使用 ALTER 命令刪除主鍵:
ALTER TABLE testalter_tbl DROP PRIMARY KEY;
刪除主鍵時(shí)只需指定PRIMARY KEY,但在刪除索引時(shí),必須知道索引名。
四、顯示索引信息
可以使用 SHOW INDEX 命令來(lái)列出表中的相關(guān)的索引信息。
可以通過(guò)添加 \G 來(lái)格式化輸出信息。
\G:將查詢到的橫向表格縱向輸出,方便閱讀。
SHOW INDEX FROM table_name\G
五、總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
基于Redo Log和Undo Log的MySQL崩潰恢復(fù)解析
這篇文章主要介紹了基于Redo Log和Undo Log的MySQL崩潰恢復(fù)流程,點(diǎn)進(jìn)來(lái)的小伙伴不要錯(cuò)過(guò)奧2021-08-08
快速學(xué)習(xí)MySQL基礎(chǔ)知識(shí)
這篇文章主要介紹了MySQL基礎(chǔ)知識(shí)的相關(guān)資料,文中講解非常細(xì)致,幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-07-07
mysql中的join和where優(yōu)先級(jí)順序解讀
這篇文章主要介紹了mysql中的join和where優(yōu)先級(jí)順序解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03
win10 下安裝 mysql 5.7.14 詳細(xì)圖文教程
本文通過(guò)文字和圖片相結(jié)合的形式給大家介紹了win10 下安裝 mysql 5.7.14的教程的,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-09-09
MySQL數(shù)據(jù)庫(kù)高危權(quán)限回收的實(shí)現(xiàn)
本文介紹MySQL數(shù)據(jù)庫(kù)的基本操作指令,包括查看和切換數(shù)據(jù)庫(kù)等,詳細(xì)講解了如何統(tǒng)計(jì)環(huán)境中的用戶及權(quán)限,并提供了權(quán)限回收的方法,包括回收高危權(quán)限和重新授權(quán)必要權(quán)限的過(guò)程,感興趣的可以了解一下2026-01-01
MySQL性能優(yōu)化之慢查詢優(yōu)化實(shí)戰(zhàn)指南
這篇文章主要為大家詳細(xì)介紹了MySQL如何進(jìn)行慢查詢優(yōu)化,文中的示例代碼簡(jiǎn)潔易懂,具有一定的借鑒價(jià)值,有需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-07-07

