name 和 age 才能唯一标识 People 中的一条数据。 这种批量查询怎么实现性能比较好?代码或者 SQL 什么都可以。
name 和 age 才能唯一标识 People 中的一条数据。 这种批量查询怎么实现性能比较好?代码或者 SQL 什么都可以。
|
zxlzyNov 18, 2021
1
SELECT * FROM people WHERE (name = 'a' AND age = 1) OR (name='b' AND age=2) OR ...
|
|
imshawerNov 18, 2021
2
要性能就要索引,要索引可以用复合主键。
|
|
RuLaiFoNov 19, 2021
3
加 name 和 age 组成的唯一索引
|
|
EmiliatanTenshiNov 19, 2021
4
最好的姿势是搞个 userId ,全域统一使用 userId 避免这种蛋疼的问题
|
|
lidlesseye11Nov 19, 2021
5
语言我就猜是 Java 吧,用的是啥 DB 你好歹说一下啊😅
|
|
c6h6benzeneNov 19, 2021 via iPhone
6
|
|
TomatoCLINov 19, 2021
7
一楼的用 in 应该也能查出来
|
|
8
mysql
SELECT * FROM people WHERE (name, age) in (('a',1),('b',2)...) |
|
taofooNov 19, 2021
9
感觉年龄区分度不大,如果 name 区分度比较大的话,可以直接拿名字然后代码判 age 过滤
|
|
calmzhuNov 19, 2021
10
不同数据量不同数据特征的解决方案不一样的。
盲猜数据量不爆炸,age 索引拿数据,然后代码过滤 name 试试。 |
|
11
@zxlzy 这样 or 查询,如果数据很多,应该会比较慢吧?
|
|
12
@lidlesseye11 语言是 Java ,DB 用得 MongoDB
|
|
13
@c6h6benzene User 是没有表的
|
|
14
|
|
zgc27woNov 19, 2021
15
要不这样?
1. 先数据库获取所有的<People> name,age,id 的组合 2. 基于 name-age 分组的[分组 A] 3. 然后匹配自己<User>的 name 和 age 获取 name-age 去[分组 A]找到对应的 Id 集合 4. 再去数据库通过 id 集合查找对应的<People> 相当于给 name,age,id 打了联合索引 |
|
br00kNov 19, 2021
16
MongoDB 可以把 name 和 age 冗余到 People 表就好了。如果只是分页用,把 userId 冗余到 People 批量查回来组装一下。
|