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      2024-02-27 17:00:24 +08:00 
                    
                    我选择怎么方便怎么来 从不考虑效率 查询慢那是 DBA 的事情 
                 | 
            
     2 
                    
                    bubble21   OP @zhangyoucaiyo 哈哈,没有 DBA ,直接一把梭 
                 | 
            
     3 
                    
                    dog82      2024-02-27 17:40:08 +08:00 
                    
                    两种写法没区别,因为 sql 引擎会把视图层代入还原掉,然后 CBO 会优化成执行效率一样的 
                 | 
            
     4 
                    
                    orzwalker111      2024-02-28 00:15:00 +08:00 
                    
                    服务划分角度,不同系统,尽量别跨库联表查询。1 )大数据/数仓那边出; 2 ) X 服务(或 A 或 B )远程接口调用聚合数据; 3 )之前将 Atable 和 Btable 拆分到不同库/系统,领域划分是否合理,是否有重新合并到一个系统/库的必要; 4 )同步一张表到 A 或 B 
                 | 
            
     6 
                    
                    bubble21   OP @orzwalker111 第三个项目中只是关联查询,不涉及到业务修改。第四种能实时的话将是不错的方案 
                 | 
            
     7 
                    
                    boshok      2024-02-28 10:24:40 +08:00 
                    
                    方式一,一点也不突兀。 
                 | 
            
     8 
                    
                    cheng6563      2024-02-28 11:26:18 +08:00 
                    
                    视图里慎重使用分组查询等骚操作 
                 |