LAMP攻略之MySQL索引
圖-LAMP
LAMP下的MySQL索引如下:
在數據庫表中,對字段建立索引可以大大提高查詢速度。假如我們創建了一個 mytable表:
- CREATE TABLE mytable(
- ID INT NOT NULL,
- username VARCHAR(16) NOT NULL
- );
我們隨機向里面插入了10000條記錄,其中有一條:5555, admin。
在查找username="admin"的記錄 SELECT * FROM mytable WHERE username='admin';時,如果在username上已經建立了索引,MySQL無須任何掃描,即準確可找到該記錄。相反,MySQL會掃描所有記錄,即要查詢10000條記錄。
索引分單列索引和組合索引。單列索引,即一個索引只包含單個列,一個表可以有多個單列索引,但這不是組合索引。組合索引,即一個索包含多個列。
索引的類型包括:
(1)普通索引這是最基本的索引,它沒有任何限制。它有以下幾種創建方式:
創建索引
- CREATE INDEX indexName ON mytable(username(length));
如果是CHAR,VARCHAR類型,length可以小于字段實際長度;如果是BLOB和TEXT類型,必須指定 length,下同。
修改表結構
- ALTER mytable ADD INDEX [indexName] ON (username(length))
創建表的時候直接指定
- CREATE TABLE mytable(
- ID INT NOT NULL,
- username VARCHAR(16) NOT NULL,
- INDEX [indexName] (username(length))
- );
刪除索引的語法:
- DROP INDEX [indexName] ON mytable;
#p#
(2)***索引它與前面的普通索引類似,不同的就是:索引列的值必須***,但允許有空值。如果是組合索引,則列值的組合必須***。它有以下幾種創建方式:
創建索引
- CREATE UNIQUE INDEX indexName ON mytable(username(length))
修改表結構
- ALTER mytable ADD UNIQUE [indexName] ON (username(length))
創建表的時候直接指定
- CREATE TABLE mytable(
- ID INT NOT NULL,
- username VARCHAR(16) NOT NULL,
- UNIQUE [indexName] (username(length))
- );
#p#
(3)主鍵索引它是一種特殊的***索引,不允許有空值。一般是在建表的時候同時創建主鍵索引:
- CREATE TABLE mytable(
- ID INT NOT NULL,
- username VARCHAR(16) NOT NULL,
- PRIMARY KEY(ID)
- );
當然也可以用 ALTER 命令。記住:一個表只能有一個主鍵。
通過文章大量的介紹,我們肯定清楚了LAMP下MySQL索引情況!
【編輯推薦】
- LAMP快速構建apache web服務器
- LAMP攻略之Apache與PHP的整合過程
- LAMP環境下Apache + SSL Howto譯文
- LAMP下Apache-mysql-php安裝
- LAMP攻略之重新編譯PHP安裝擴展和GD庫安裝與配置
- LAMP環境搭建之Apache的后續配置工作
- LAMP環境搭建之配置PHP