mysql 如何利用组合索引批量查询
巴扎黑
巴扎黑 2017-04-17 11:51:49
[MySQL讨论组]

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并且一次查询查询到所有满足输入条件的数据,请教要如何查询?

巴扎黑
巴扎黑

全部回复(2)
天蓬老师

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

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

天蓬老师

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

alter table test add index b(b);
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号