mysql 複合式索引中對範圍的查詢

來源:互聯網
上載者:User

標籤:big   between   SQ   mysql   技術   9.png   for   解決   nic   

 

  

建立表:

CREATE TABLE `ygzt_test` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`a` int(11) NOT NULL,
`b` int(11) NOT NULL,
`c` int(11) NOT NULL,
`d` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `a` (`a`,`b`,`c`,`d`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT=‘測試‘;

 

一、實驗一,無order by

 

首先加聯合索引a,b,c,d

explain select * from ygzt_test where a=1 and b=2 and c=3 and d=4

修改sql:

explain select * from ygzt_test where a>1 and b=2 and c=3 and d=4

type已經由ref降為index

 

修改索引b,c,d,a

explain select * from ygzt_test where a>1 and b=2 and c=3 and d=4

done

 

二、實驗二,order by

 

建立索引a,b

explain select * from ygzt_test where a>0 order by b

可以看到,a>0使用了索引,order by b 未使用

 

修改索引為b,a

explain select * from ygzt_test where a>0   order by b

 

where 與 order by 都無索引

想起此前order by+select *的問題

這個問題單獨拿出來實踐下:

修改索引為a

explain select * from ygzt_test order by a

 

explain select * from ygzt_test FORCE INDEX (a)  order by a

 

 

 

結論:

1.單列索引中——<,<=,=,>,>=,between,like(右邊模糊)適用索引

2.索引中有範圍的,有序性失效,解決方案以實際為準

 

mysql 複合式索引中對範圍的查詢

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.