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

2021-12-29 19:52:49 字數 1053 閱讀 7650

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

索引的型別

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

普通索引

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

建立索引,例如:

create index on tablename (列名)修改表

alter table tablename add index [indexname] (列的列表)建立表的時候指定索引,例如

create table tablename([...], index [indexname] (列的列表))唯一性索引

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

建立索引,例如:

create unique index on tablename (columnname)修改表:

alter table tablename add unique [indexname] (columnname)建立表的時候指定索引

create table tablename([...], unique [indexname] (columnname))主鍵主鍵是一種唯一性索引,但它必須指定為「primary key」。如果你曾經用過auto_increment型別的列,你可能已經熟悉主鍵之類的概念了。主鍵一般在建立表的時候,指定,例如

create table tablename ([...], primary key(columnname))但是,我們也可以通過修表的方式加入主鍵,例如:

alter table tablename add primary key (columnname)每個表只能有乙個主鍵

全文索引

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

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

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

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

什麼是索引 索引有哪幾種

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