MySQL——索引基礎

本篇文章,我們將從索引基礎開始,介紹什麼是索引以及索引的幾種類型,然後學習如何創建索引以及索引設計的基本原則。

本篇文章中用於測試索引創建的user表的結構如下:

什麼是索引

索引(在 MySQL 中也叫“鍵key”)是存儲引擎快速找到記錄的一種數據結構

——《高性能MySQL》

我們需要知道索引其實是一種數據結構,其功能是幫助我們快速匹配查找到需要的數據行,是數據庫性能優化最常用的工具之一。其作用相當於超市裏的導購員、書本里的目錄。

索引類型

可以使用SHOW INDEX FROM table_name;查看索引詳情

1.主鍵索引 PRIMARY KEY

它是一種特殊的唯一索引,不允許有空值。一般是在建表的時候同時創建主鍵索引。

注意:一個表只能有一個主鍵

2.唯一索引 UNIQUE

唯一索引列的值必須唯一,但允許有空值。如果是組合索引,則列值的組合必須唯一。

可以通過ALTER TABLE table_name ADD UNIQUE (column);創建唯一索引

可以通過ALTER TABLE table_name ADD UNIQUE (column1,column2);創建唯一組合索引

3.普通索引 INDEX

最基本的索引,它沒有任何限制。

可以通過ALTER TABLE table_name ADD INDEX index_name (column);創建普通索引

4.組合索引 INDEX

組合索引,即一個索引包含多個列。多用於避免回表查詢。

可以通過ALTER TABLE table_name ADD INDEX index_name(column1, column2, column3);創建組合索引

5.全文索引 FULLTEXT

全文索引(也稱全文檢索)是目前搜索引擎使用的一種關鍵技術。

可以通過ALTER TABLE table_name ADD FULLTEXT (column);創建全文索引

索引一經創建不能修改,如果要修改索引,只能刪除重建。可以使用DROP INDEX index_name ON table_name;刪除索引。

索引設計的原則

  1. 適合索引的列是出現在where子句中的列,或者連接子句中指定的列

  2. 基數較小的類,索引效果較差,沒有必要在此列建立索引

  3. 使用短索引,如果對長字符串列進行索引,應該指定一個前綴長度,這樣能夠節省大量索引空間

  4. 不要過度索引。索引需要額外的磁盤空間,並降低寫操作的性能。在修改表內容的時候,索引會進行更新甚至重構,索引列越多,這個時間就會越長。所以只保持需要的索引有利於查詢即可。

參考

  • 《深入淺出MySQL》
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章