什麼是索引 索引有哪幾種

2021-08-26 10:38:06 字數 1652 閱讀 2059

索引用來快速地尋找那些具有特定值的記錄,所有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 (列的列表); 」。每個表只能

有乙個主鍵。

(四)全文索引

mysql從3.23.23版開始支援全文索引和全文檢索。在mysql中,全文索引的索引型別為fulltext。全文索引可以在varchar或者

text型別的列上建立。它可以通過create table命令建立,也可以通過alter table或create index命令建立。對於大規模的數

據集,通過alter table(或者create index)命令建立全文索引要比把記錄插入帶有全文索引的空表更快。本文下面的討論不

(四)單列索引與多列索引

索引可以是單列索引,也可以是多列索引。下面我們通過具體的例子來說明這兩種索引的區別。假設有這樣乙個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無需掃瞄任何記錄既可...