素材牛VIP会员
mysql 如何利用组合索引批量查询
 Ca***on  分类:SQL代码  人气:810  回帖:2  发布于6年前 收藏

CREATE TABLE test (
a int(10) NOT NULL,
b int(11) NOT NULL,
c int(11) NOT NULL,
msg varchar(255) NOT NULL,
PRIMARY KEY (a,b,c)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

代码里会计算得到很多组数据(a=1,b=2),(a=2,b=4),(a=3,b=1),(a=5,b=3)...

如果只是单列数据可以用in查询很方便的查
select * from test where a in(1,2,4,5);

但是实际应用场景a的区分度不高,b的区分度较高可是
select * from test where b in(1,2,4,5);用不上primary key。

想同时用上a,b并且一次查询查询到所有满足输入条件的数据,请教要如何查询?

 标签:mysql

讨论这个帖子(2)垃圾回帖将一律封号处理……

Lv4 码徒
风***0 JS工程师 6年前#1

select * from test where (a,b) in ((1,1),(2,2),(3,3))

ps:如果a区分度不高的话,为什么要建立索引?

Lv1 新人
风***扬 Web前端工程师 6年前#2

如果你觉得B匹配度较高的话,给B单独建立一个索引吧。

alter table test add index b(b);
 文明上网,理性发言!   😉 阿里云幸运券,戳我领取