假設你在表的state、city和zip資料列上建立了復合索引。索引中的資料行按照state/city/zip次序排列,
因此它們也會自動地按照state/city和state次序排列。這意味著,即使你在查詢中只指定了state值,
或者指定state和city值,mysql也可以使用這個索引。因此,這個索引可以被用於搜尋如下所示的資料列組合:
state, city, zip
state, city
state
mysql不能利用這個索引來搜尋~沒有包含在最左字首的內容~。例如,如果你按照city或zip來搜尋,
就不會使用到這個索引。如果你搜尋給定的state和具體的zip**(索引的1和3列),
該索引也是不能用於這種組合值的,儘管mysql可以利用索引來查詢匹配的state從而縮小搜尋的範圍。
如果你考慮給已經索引過的表新增索引,那麼就要考慮你將增加的索引是否是已有的多列索引的最左字首。
如果是這樣的,不用增加索引,因為已經有了(例如,如果你在state、city和zip上建立了索引,那麼沒有必要再增加state的索引)。
複製**
假設表persons
有如下資訊段
create
table
`persons` (
`id`
int(10) unsigned
notnull auto_increment,
`uuid`
varchar(60) not
null
comment
'uuid',
`unitcode`
varchar(30) not
null
comment
'單位編碼',
`code1`
varchar(36) default
null
comment
'員工號/編碼',
`name1`
varchar(50) default
null
comment
'姓名',
/** ...
*/`s_date`
date
default
null
comment
'員工檔案建檔日期',
`logout`
smallint(6) default
null
comment
'在職狀態',
/** ...
*/`deleted_at`
timestamp
null
default
null,
primary key (`id`),
unique
key`persons_uuid_unique` (`uuid`),
key`persons_name1_unitcode_index` (`name1`,`unitcode`),
/** ...
*/key`persons_name1_unitcode_logout_deleted_at_index` (`name1`, `unitcode`,`logout`,`deleted_at`) using btree
) engine=innodb auto_increment=34199
default
charset=utf8mb4 collate=utf8mb4_0900_ai_ci;
複製**
有如下查詢語句
-- sql1
desc select * from
`persons`
where
`unitcode`
like
'000%'
and`logout` = '0'
and`persons`.`deleted_at`
isnull
order
by`name1`
limit
15offset
0-- sql2
desc
select
`unitcode`, `name1`
from
`persons`
where
`unitcode`
like
'000%'
and`logout` = '0'
and`persons`.`deleted_at`
isnull
order
by`name1`
limit
15offset
0複製**
上面的sql1
中不會用到索引,sql2
中才用到索引
要使sql1
中用到索引必須將sql查詢語句
中where
中沒有出現,只是在order by
**現的列名
放到索引
的最後面,將 索引persons_name1_unitcode_logout_deleted_at_index
改為以下即可。
/*
* ...
*/key `persons_name1_unitcode_logout_deleted_at_index` (`unitcode`,`logout`,`deleted_at`, `name1`) using btree
複製**
mysql索引 使用筆記 mysql索引筆記
mysql索引 一 索引的優缺點 優點 1.通過建立唯一索引,可以保證資料庫表中每一行的唯一性。2.可以大大加快查詢速度,這是建立索引的最主要原因 4.在使用分組和排序子句進行資料查詢時,也可以顯著減少查詢中分組和查詢的時間 缺點 1.建立索引和維護索引要耗費時間,並且隨著資料量的增加所耗費的時間也...
mysql索引筆記
型別 雜湊 雜湊演算法 原理 雜湊演算法 將各個資料重組成編號,查詢時將資料編號直接找到查詢到的值 優勢 一次性找到該值 劣勢 資料連續性差 中 編號 005 國 編號 006 人 編號 007 民 編號 008 如果查詢 中民 tree 二叉樹演算法 log2n 原理 當我查詢3時,此時4比3大走...
MySql筆記(索引)
索引能優化資料庫查詢效能,但索引也有代價 挑選索引應符合以下原則 為用於搜尋 排序或分組的列建立索引,爾對於用作輸出顯示的列 select的結果 則不用。也就是說,最好是那些出現在where子句,連線子句,或者出現在order by或group by子句中的列 考慮資料列基數 列的基數是指列中非重複...