深入MySQL資料庫的索引(1)

來源:互聯網
上載者:User

索引是加速表內容訪問的主要手段,特別對涉及多個表的串連的查詢更是如此。這是資料庫最佳化中的一個重要內容,我們要瞭解為什麼需要索引,索引如何工作以及怎樣利用它們來最佳化查詢。本節中,我們將介紹索引的特點,以及建立和刪除索引的文法。

索引的特點

所有的MySQL列類型能被索引。在相關的列上的使用索引是改進SELECT操作效能的最好方法。

一個表最多可有16個索引。最大索引長度是256個位元組,儘管這可以在編譯MySQL時被改變。

對於CHAR和VARCHAR列,你可以索引列的首碼。這更快並且比索引整個列需要較少的磁碟空間。對於BLOB和TEXT列,你必須索引列的首碼,你不能索引列的全部。

MySQL能在多個列上建立索引。一個索引可以由最多15個列組成。在CHAR和VARCHAR列上,你也可以使用列的首碼作為一個索引的部分)。

雖然隨著 MySQL 的進一步開發建立索引的約束將會越來越少,但現在還是存在一些約束的。下面的表根據索引的特性,給出了 ISAM 表和 MyISAM 表之間的差別:

表2-1  通道資訊特徵字對照表

索引的特點 ISAM 表 MyISAM 表
NULL 值
BLOB 和 TEXT 列
每個表中的索引數
每個索引中的列數
最大索引行尺寸

不允許
不能索引
16
16
256 位元組
允許
只能索引列的首碼
32
16
500 位元組

從此表中可以看到,對於 ISAM 表來說,其索引列必須定義為 NOT NULL,並且不能對 BLOB 和 TEXT 列進行索引。MyISAM 表類型去掉了這些限制,而且減緩了其他的一些限制。兩種表類型的索引特性的差異表明,根據所使用的 MySQL 版本的不同,有可能對某些列不能進行索引。例如,如果使用3.23 版以前的版本,則不能對包含 NULL 值的列進行索引。

索引有如下的幾種情況:

INDEX索引:通常意義的索引,某些情況下KEY是它的一個同義字。索引的列可以包括重複的值。

UNIQUE索引:唯一索引,保證了列不包含重複的值,對於多列唯一索引,它保證值的組合不重複。

PRIMARY KEY索引:也UNIQUE索引非常類似。事實上,PRIMARY KEY索引僅是一個具有PRIMARY名稱的UNIQUE索引。這表示一個表只能包含一個PRIMARY KEY。


相關文章

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.