SQL 请教:两张同样的表, ID 唯一,如何 select?

2020-05-26 07:17:18 +08:00
 nikoo
两张表结构相同,id 全局唯一,随机分散在两个表中,目前只知道 id,能否一句 select 获得结果?

tableA:
id,value
1,...
3,...
4,...

tableB:
id,value
2,...
5,...
6,...

目前仅给出 id:5,如何实现 select 语句?
1976 次点击
所在节点    问与答
10 条回复
Chihaya0824
2020-05-26 07:20:52 +08:00
a342191555
2020-05-26 07:21:08 +08:00
select * from a where a.id =5 union select *from b where b.id = 5
chinvo
2020-05-26 07:26:15 +08:00
根据 id 特征分表可以减少查询时的损耗
wushigejiajia01
2020-05-26 07:58:29 +08:00
不知道分片规则是没法准确有效查的吧?

用 union 肯定不是最优解
wushigejiajia01
2020-05-26 08:03:14 +08:00
1. 5%2=1

2. select tableB
YUyu101
2020-05-26 08:06:58 +08:00
随机分散可还行,那只能 union 吧,这样分表也不能减少压力啊,除非你查出来后保存 id 是那张表,以后不要再查两遍了。
shakoon
2020-05-26 08:36:30 +08:00
已经确认全局唯一了那用 union all 。union 会做去重,效率远低于 union all
nikoo
2020-05-26 12:30:28 +08:00
并不知道随机分布规则,所以无法用例如 5%2=1 之类提前获知 id 处于哪张表

@a342191555 谢谢,这样写需要将匹配的 id 值写两遍,感觉似乎不太优雅?


如果不能提算出 id 处于哪张表,是否用 union /union all 是唯一的方案了?
daozhihun
2020-05-26 12:32:50 +08:00
话说,为什么会有随机分配在两张表这种设计。。
msg7086
2020-05-26 12:34:02 +08:00
不能预测处于哪张表,那必定要同时查两张表拿数据,那不就是 union 么。
查两张表,你觉得值写两遍不雅,可以先放在变量里啊。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/675459

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX