在 MySQL 中創建索引:MySQL 索引教程 [2022]
已發表: 2021-01-01數據科學家或程序員將不得不處理大量數據,並且需要能夠有效地處理它以更快地執行。 他們還需要了解數據的組織方式以及輕鬆訪問所需特定數據的最快方法。
由於 MySQL 是一個關係數據庫管理系統,在 Web 數據庫、電子商務應用程序、社交媒體等各個領域都有應用。數據科學家需要了解與 MySQL 相關的所有技術,其中之一就是索引。 本文介紹瞭如何在 MySQL 中創建索引。
目錄
什麼是索引?
在 MySQL 中,索引用於以有組織的順序方式對數據進行排序,並有效快速地檢索數據。 它們是通過使用一個或多個用於過濾數據的列創建的。 索引是一種表,它保留主表或索引字段以及指向主表中每條記錄的指針。
為了更好地理解,可以使用書籍索引作為示例。 不是通過瀏覽書中的所有頁面來查找頁面,而是可以檢查書籍索引以找到正在查找的頁面。
在大多數數據庫系統中,需要高性能和快速的性能。 許多企業在硬件上投入巨資,以實現更快的數據檢索和操作。 但是通過優化數據庫,可以降低成本。
響應時間通常較長,因為記錄是隨機存儲的,搜索查詢必須通過循環遍歷整個存儲的記錄來找到所需的數據。 索引使這種搜索更容易和更快。

閱讀:重命名 SQL 中的列名
創建索引
您可以使用以下基本語法在 MySQL 中為表創建索引。
CREATE INDEX index_name table_name (column_name);
您還可以在表上創建唯一索引。 這意味著名稱是唯一的,任何兩行都不能有相同的名稱。 可以為此使用以下語法。
CREATE UNIQUE INDEX index_name ON table_name (column_name);
如果為列創建了二級索引,MySQL 會將值存儲在單獨的數據結構中,例如 B-Tree 和 Hash。 在 MySQL 中,如果列是字符串列,您可以使用以下語法為字符串列的列值的前導部分創建索引:
列名(長度)
要在創建表時創建列前綴鍵部分,可以使用以下語法:
創建表表名(
列列表,
索引(列名(長度))
);
並向現有表添加索引:
CREATE INDEX index_name ON table_name (column_name(length));
如果是非二進製字符串類型(如 CHAR、VARCHAR 和 TEXT),此處的長度是字符數;如果是二進製字符串類型(如 BINARY、VARBINARY 和 BLOB),則此處的長度是字節數。 您還可以為 MySQL 中的 CHAR、VARCHAR、BINARY 和 VARBINARY 列創建列前綴鍵部分。 如果您已為 BLOB 和 TEXT 列創建索引,則必須指定列前綴鍵部分。
對於僅 InnoDB 和 MyISAM 表支持的 FULLTEXT 索引,它們只能包含 CHAR、VARCHAR 和 TEXT 列。 它不支持列前綴索引,如果指定了任何前綴長度,則會被忽略。
必讀: SQL 項目理念
更改表以添加或刪除索引
要將索引添加到表中,可以使用四種類型的語句:
- 添加主鍵:
ALTER TABLE table_name ADD PRIMARY KEY (column_list);

這裡的索引值應該是唯一的,不能為 NULL。
- 對於具有唯一值的索引:
ALTER TABLE table_name 添加唯一的 index_name (column_list);
這些值應該是唯一的,但 NULL 除外,它可以出現多次。
- 添加普通索引:
ALTER TABLE table_name ADD INDEX index_name (column_list);
這裡的值可以出現不止一次。
- 要創建特殊的 FULLTEXT 索引:
ALTER TABLE table_name ADD FULLTEXT index_name (column_list);
FULLTEXT 索引可用於文本搜索。
在現有表中
要在任何現有表中添加索引,可以使用以下語法:
ALTER TABLE table_name ADD INDEX (index_name);
要刪除表中的索引,請使用 DROP INDEX 語句:
ALTER TABLE table_name DROP INDEX (index_name);
顯示索引信息
要列出與任何表關聯的所有索引,請使用 SHOW INDEX 命令。
顯示來自 table_name\G 的索引
'\G' 用於以垂直格式創建列表,這避免了長行環繞。
另請閱讀: SQL 面試問答
降序索引
當索引為降序索引時,InnoDB 可以按降序存儲條目。 因此,當查詢中請求降序時,優化器會選擇此索引。 這對於使用 ORDER BY 子句的查詢更有效。 這些僅由 InnoDB 存儲引擎支持。
創建或添加降序索引的語法類似於上面使用的 alter 或 create 語法。
ALTER TABLE table_name ADD index_name (col1_name desc, col2_name asc);
CREATE INDEX index_name ON table_name (col1_name desc, col2_name asc);
隱形索引
要將索引標記為查詢優化器不可用,可以使用不可見索引。 當與索引關聯的列中的數據發生變化時,MySQL 會更新不可見的索引。 索引默認是可見的,要使其不可見,您必須在創建時或使用 ALTER TABLE 命令顯式聲明可見性。
要創建不可見索引,使用以下語法:
CREATE INDEX index_name ON table_name (c1, c2…) INVISIBLE;
要更改現有索引的可見性,請使用以下語法:
ALTER TABLE table_name ALTER INDEX index_name [VISIBLE | 無形的];

報名參加世界頂尖大學的在線軟件開發課程。 獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。
結論
使用索引可以提高 MySQL 搜索查詢的性能。 這些可以在創建表時定義,或者如果表已經創建,則可以稍後添加。
本文簡要介紹了索引是什麼以及使用它的原因。 下一節將解釋如何在 MySQL 中創建索引,如何將其添加到現有表中以及如何創建唯一索引。
還描述了更改表和創建或刪除索引的不同命令以及顯示索引信息。 還簡要解釋了降序和不可見索引。
總而言之,在本文中提到的所有數據庫上學習和實踐將增加您的經驗。 瀏覽與之相關的課程概述、學習和工作機會——upGrad 等平台提供由 IIIT-B 等知名機構在 Executive PG Program Full Stack Development 中設計的功能強大的課程。
