假如我們創建了一個testIndex表:
CREATE TABLE testIndex(i_testID INT NOT NULL,vc_Name VARCHAR(16) NOT NULL);
我們隨機向裡面插入了1000條記錄,其中有一條
i_testID vc_Name
555 erquan
在查找vc_Name="erquan"的記錄
SELECT * FROM testIndex WHERE vc_Name='erquan';
時,如果在vc_Name上已經建立了索引,MySql無須任何掃描,即准確可找到該記錄!相反,MySql會掃描所有記錄,即要查詢1000次啊~~可以索引將查詢速度提高100倍。
一、索引分單列索引和組合索引
單列索引:即一個索引只包含單個列,一個表可以有多個單列索引,但這不是組合索引。
組合索引:即一個索包含多個列。
二、介紹一下索引的類型
1.普通索引。
這是最基本的索引,它沒有任何限制。它有以下幾種創建方式:
(1)創建索引:CREATE INDEX indexName ON tableName(tableColumns(length));如果是CHAR,VARCHAR類型,length可以小於字段實際長度;如果是BLOB 和 TEXT 類型,必須指定length,下同。
(2)修改表結構:ALTER tableName ADD INDEX [indexName] ON (tableColumns(length))
(3)創建表的時候直接指定:CREATE TABLE tableName ( [...], INDEX [indexName] (tableColumns(length)) ;
2.唯一索引。
它與前面的"普通索引"類似,不同的就是:索引列的值必須唯一,但允許有空值。如果是組合索引,則列值的組合必須唯一。它有以下幾種創建方式:
(1)創建索引:CREATE UNIQUE INDEX indexName ON tableName(tableColumns(length))
(2)修改表結構:ALTER tableName ADD UNIQUE [indexName] ON (tableColumns(length))
(3)創建表的時候直接指定:CREATE TABLE tableName ( [...], UNIQUE [indexName] (tableColumns(length));