什麼是索引 索引有哪幾種 什麼時候用索引比較好

2021-06-01 17:31:38 字數 1396 閱讀 5768

索引用來快速地尋找那些具有特定值的記錄,所有mysql索引都以b-樹的形式儲存。如果沒有索引,執行查詢時mysql必須從第乙個記錄開始掃瞄整個表的所有記錄,直至找到符合要求的記錄。表裡面的記錄數量越多,這個操作的代價就越高。如果作為搜尋條件的列上已經建立了索引,mysql無需掃瞄任何記錄即可迅速得到目標記錄所在的位置。如果表有1000個記錄,通過索引查詢記錄至少要比順序掃瞄記錄快100倍。 

索引的型別

mysql提供多種索引型別供選擇:

普通索引

這是最基本的索引型別,而且它沒有唯一性之類的限制。普通索引可以通過以下幾種方式建立:

建立索引,例如create index 《索引的名字》 on tablename (列的列表);

修改表,例如alter table tablename add index [索引的名字] (列的列表);

建立表的時候指定索引,例如create table tablename ( [...], index [索引的名字] (列的列表) );

唯一性索引

這種索引和前面的「普通索引」基本相同,但有乙個區別:索引列的所有值都只能出現一次,即必須唯一。唯一性索引可以用以下幾種方式建立:

建立索引,例如create unique index 《索引的名字》 on tablename (列的列表);

修改表,例如alter table tablename add unique [索引的名字] (列的列表);

建立表的時候指定索引,例如create table tablename ( [...], unique [索引的名字] (列的列表)

); 主鍵

主鍵是一種唯一性索引,但它必須指定為「primary key」。如果你曾經用過auto_increment型別的列,你可能已經熟悉主鍵之類的概念了。主鍵一般在建立表的時候指定,例如「create table tablename ( [...], primary key (列的列表) ); 」。但是,我們也可以通過修改表的方式加入主鍵,例如「alter table tablename add primary key (列的列表); 」。每個表只能有乙個主鍵。

全文索引

單列索引與多列索引

索引可以是單列索引,也可以是多列索引。下面我們通過具體的例子來說明這兩種索引的區別。假設有這樣乙個people表:

create table people ( peopleid smallint not null auto_increment, firstname char(50)

not null, lastname char(50) not null, age smallint not null, townid smallint not

null, primary key (peopleid) );

什麼是索引 索引有哪幾種 什麼時候用索引比較好

索引用來快速地尋找那些具有特定值的記錄,所有mysql索引都以b 樹的形式儲存。如果沒有索引,執行查詢時mysql必須從第乙個記錄開始掃瞄整個表的所有記錄,直至找到符合要求的記錄。表裡面的記錄數量越多,這個操作的代價就越高。如果作為搜尋條件的列上已經建立了索引,mysql無需掃瞄任何記錄即可迅速得到...

什麼是索引?索引有哪幾種?什麼時候使用索引比較好?

索引用來快速地尋找那些具有特定值的記錄,所有的mysql索引都以b 樹的形式儲存。如果沒有索引,執行查詢的時候mysql必須從第乙個記錄開始掃瞄整個表中的所有記錄,直至找到符合要求的記錄。表裡面的記錄數量越多,這個操作的代價就越高。如果作為搜尋條件的列上已經建立了索引,mysql無需掃瞄任何記錄既可...

什麼是索引 索引有哪幾種

索引用來快速地尋找那些具有特定值的記錄,所有mysql索引都以b 樹的形式儲存。如果沒有索引,執行查詢時mysql必須從第 乙個記錄開始掃瞄整個表的所有記錄,直至找到符合要求的記錄。表裡面的記錄數量越多,這個操作的代價就越高。如果作為 搜尋條件的列上已經建立了索引,mysql無需掃瞄任何記錄即可迅速...