資料準備:假設我們有如下圖所示的資料庫表study_goods_size,並且我們設定goods_id和size_id為聯合索引,即:idx_goods_size。
create table `study_goods_size` (
`id` bigint(20) unsigned not null auto_increment comment '主鍵',
`goods_id` varchar(50) not null default '' comment '商品id',
`goods_name` varchar(50) not null default '' comment '商品名稱',
`size_id` varchar(100) not null default '' comment '尺碼id',
`size_name` varchar(100) not null default '' comment '尺碼名稱',
聯合索引命中總結 場景
sql是否命中索引
其他場景1
explain select * from study_goods_size where goods_id = 123 and size_id = 234;
no場景2
explain select * from study_goods_size where goods_id = '123' and size_id = 234;
yes場景3
explain select * from study_goods_size where goods_id = 123 and size_id = '234';
no場景4
explain select * from study_goods_size where goods_id = '123' and size_id = '234';
yes場景5
explain select * from study_goods_size where size_id = '234' and goods_id = '123' ;
yes場景6
explain select * from study_goods_size where goods_id = '123';
yes場景7
explain select * from study_goods_size where goods_id = 123;
no場景8
explain select size_id from study_goods_size where goods_id = 123;
yes場景9
explain select size_id from study_goods_size where goods_id = '123';
yes場景10
explain select size_id from study_goods_size;
yes
結果:不能命中索引,實測情況如下圖所示:
【參考資料】
索引型別參考:
如何檢測mysql是否命中索引:
資料庫索引及優化
資料庫索引 一 索引的概念 索引是一種排好序的快速查詢的資料結構。索引本身也很大,不可能全部儲存在記憶體中,因此索引往往以索引檔案的形式儲存在磁碟上。我們平常所說的索引,如果沒有特別指明,都是指b樹 多路搜尋樹,並不一定是二叉的 結構組織的索引。其中聚集索引 次要索引 覆蓋索引 復合索引 字首索引 ...
資料庫索引及結構
索引是一種特殊的檔案,它包含著對資料表中所有記錄裡的引用指標 索引是一種資料結構。資料庫索引,是資料庫管理系統中乙個排序的資料結構,以協助快速查詢 更新資料庫表中資料。更通俗的來講,索引就相當於目錄。索引的優點 索引的缺點 可以通過alter table table name add unique ...
資料庫的索引及實現
資料庫索引好比是一本書前面的目錄,能加快資料庫的查詢速度。索引是對資料庫表中乙個或多個列 例如,employee 表的姓氏 lname 列 的值進行排序的結構。如果想按特定職員的姓來查詢他或她,則與在表中搜尋所有的行相比,索引有助於更快地獲取資訊。優點 1.大大加快資料的檢索速度 2.建立唯一性索引...