Mysql的列索引和多列索引(聯合索引)

2021-09-06 20:29:48 字數 1445 閱讀 1180

**:

建立乙個多列索引:

create table test (  

id         int not null,  

last_name  char(30) not null,  

first_name char(30) not null,  

primary key (id),  

index name (last_name,first_name)  

);  

建立多個索引:

create table test (  

id         int not null,  

last_name  char(30) not null,  

first_name char(30) not null,  

primary key (id),  

index name (last_name),  

index_2 name (first_name)  

);  

當查詢語句的條件中包含last_name 和 first_name時,

例如:select * from test where last_name='kun' and first_name='li';  

sql會先過濾出last_name符合條件的記錄,在其基礎上再過濾first_name符合條件的記錄。那如果我們分別在last_name和first_name上建立兩個列索引,mysql的處理方式就不一樣了,它會選擇乙個最嚴格的索引來進行檢索,可以理解為檢索能力最強的那個索引來檢索,另外乙個利用不上了,這樣效果就不如多列索引了。

但是多列索引的利用也是需要條件的,以下形式的查詢語句能夠利用上多列索引:

select * from test where last_name='widenius';

select * from test where last_name='widenius' and first_name='michael';

select * from test where last_name='widenius' and (first_name='michael' or first_name='monty');

select * from test where last_name='widenius' and first_name >='m' and first_name < 'n';

以下形式的查詢語句利用不上多列索引:

select * from test where first_name='michael';

select * from test where last_name='widenius' or first_name='michael';

多列建索引比對每個列分別建索引更有優勢,因為索引建立得越多就越佔磁碟空間,在更新資料的時候速度會更慢。另外建立多列索引時,順序也是需要注意的,應該將嚴格的索引放在前面,這樣篩選的力度會更大,效率更高。

mysql多列索引 MySQL的多列索引

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

Mysql的列索引和多列索引(聯合索引)

建立乙個多列索引 create table test id int not null,last name char 30 not null,first name char 30 not null,primary key id index name last name,first name 建立多個索...

MySQL單列索引和多列索引

在設計mysql表索引的時候,可能有個問題,就是多個單列索引好,還是設計為多列索引好 下面從不同角度分析下這個問題 1.多個單列索引 定義 即是在表中在需要索引的字段上為每個字段設計乙個索引 特點 簡單,索引個數多 2.多列索引 定義 即是在表中根據查詢需求在多個欄位上設計乙個索引 特點 稍微複雜,...