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