1. 程式人生 > 資料庫 >淺析mysql索引

淺析mysql索引

資料庫索引是一種資料結構,目的是提高表的操作速度。可以使用一個或多個列,提供快速隨機查詢和訪問記錄的高效排序來建立索引。

要建立的索引,應當認為哪列將用於使SQL查詢,建立對這些列的一個或多個索引。

實際上,索引也是表,其中儲存主鍵或索引欄位的指標並指向每個記錄到實際的表的型別。

使用者無法看到索引,它們只是用來加速查詢,並將被用於資料庫搜尋引擎在查詢記錄時提高速度。

INSERT和UPDATE語句需要更多的時間來建立索引,作為在SELECT語句快速在這些表上操作。其原因是,在執行插入或更新資料時,資料庫需要將插入或更新索引值也更新。

簡單和唯一索引

可以在表上建立唯一值索引。唯一索引意味著兩行不能有相同的索引值。下面是在表上建立索引的語法:

CREATE UNIQUE INDEX index_name
ON table_name ( column1,column2,...);

可以使用一個或多個列來建立索引。例如,我們可以使用tutorial_author 來建立一個 tutorials_tbl 索引。

CREATE UNIQUE INDEX AUTHOR_INDEX
ON tutorials_tbl (tutorial_author)

可以在表上建立一個簡單的索引。建立簡單的索引只是省略UNIQUE關鍵字。簡單的索引可以在表中重複的值。

如果想索引的列的值按降序排列,可以列名之後新增保留字DESC。

mysql> CREATE UNIQUE INDEX AUTHOR_INDEX
ON tutorials_tbl (tutorial_author DESC)

使用ALTER命令來新增和刪除索引

有四種類型的索引可以新增到一個表:

  • ALTER TABLE tbl_name ADD PRIMARY KEY (column_list):新增一個主鍵(PRIMARY KEY),這意味著索引值必須是唯一的,而不能為空。
  • ALTER TABLE tbl_name ADD UNIQUE index_name (column_list):建立一個索引的量的值必須是唯一的(除了不能使用NULL值,其它的可以出現多次)。
  • ALTER TABLE tbl_name ADD INDEX index_name (column_list):增加普通的索引,其中的任何值的出現多次。
  • ALTER TABLE tbl_name ADD FULLTEXT index_name (column_list):建立一個用於文字搜尋目的一種特殊的FULLTEXT索引。

下面是一個新增索引到現有表的例子。

mysql> ALTER TABLE testalter_tbl ADD INDEX (c);

可以通過使用 ALTER 命令以及DROP子句來刪除索引。試試下面的例子,用來刪除上面建立的索引。

mysql> ALTER TABLE testalter_tbl DROP INDEX (c);

使用ALTER命令來新增和刪除PRIMARY KEY

也可以用同樣的方法新增主鍵。但要在列確保主鍵正常使用,需要指定使用 NOT NULL。

下面是一個例子新增主鍵在現有的表。列需要新增 NOT NULL屬性,然後再新增為一個主鍵。

mysql> ALTER TABLE testalter_tbl MODIFY i INT NOT NULL;
mysql> ALTER TABLE testalter_tbl ADD PRIMARY KEY (i);

可以使用ALTER命令刪除主鍵如下:

mysql> ALTER TABLE testalter_tbl DROP PRIMARY KEY;

要刪除索引的不是主鍵,必須指定索引名。

顯示索引資訊

可以使用SHOW INDEX命令,列出所有與表相關的索引。 垂直格式輸出(由\G指定),這是經常有用的語句,以避免長線概括輸出:

試試下面的例子:

mysql> SHOW INDEX FROM table_name\G
........

總結

以上所述是小編給大家介紹的mysql索引,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回覆大家的。在此也非常感謝大家對我們網站的支援!