mysql 中有两个库 A ,B 分别对应独立两个项目,现在有第三个项目需要关联查询 ab 两个库的数据
方式一(直接使用库名.表名)
SELECT
a.id,
b.id
FROM
databaseA.table a
LEFT JOIN databaseB.table b ON a.account = b.account
方式二(在某个库中新建视图)
SELECT
a.id,
b.id
FROM
databaseA.table a
LEFT JOIN databaseA.v_table b ON a.account = b.account
在十万数据基础上测试速度 方式一 > 方式二 但是这种直接使用库名方式感觉有点突兀,有其它讲究吗
1
zhangyoucaiyo 295 天前
我选择怎么方便怎么来 从不考虑效率 查询慢那是 DBA 的事情
|
2
bubble21 OP @zhangyoucaiyo 哈哈,没有 DBA ,直接一把梭
|
3
dog82 295 天前
两种写法没区别,因为 sql 引擎会把视图层代入还原掉,然后 CBO 会优化成执行效率一样的
|
4
orzwalker111 295 天前
服务划分角度,不同系统,尽量别跨库联表查询。1 )大数据/数仓那边出; 2 ) X 服务(或 A 或 B )远程接口调用聚合数据; 3 )之前将 Atable 和 Btable 拆分到不同库/系统,领域划分是否合理,是否有重新合并到一个系统/库的必要; 4 )同步一张表到 A 或 B
|
6
bubble21 OP @orzwalker111 第三个项目中只是关联查询,不涉及到业务修改。第四种能实时的话将是不错的方案
|
7
boshok 294 天前
方式一,一点也不突兀。
|
8
cheng6563 294 天前
视图里慎重使用分组查询等骚操作
|