两种 sql 查询方式选择

294 天前
 bubble21

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

在十万数据基础上测试速度 方式一 > 方式二 但是这种直接使用库名方式感觉有点突兀,有其它讲究吗

1623 次点击
所在节点    MySQL
11 条回复
zhangyoucaiyo
294 天前
我选择怎么方便怎么来 从不考虑效率 查询慢那是 DBA 的事情
bubble21
294 天前
@zhangyoucaiyo 哈哈,没有 DBA ,直接一把梭
dog82
294 天前
两种写法没区别,因为 sql 引擎会把视图层代入还原掉,然后 CBO 会优化成执行效率一样的
orzwalker111
294 天前
服务划分角度,不同系统,尽量别跨库联表查询。1 )大数据/数仓那边出; 2 ) X 服务(或 A 或 B )远程接口调用聚合数据; 3 )之前将 Atable 和 Btable 拆分到不同库/系统,领域划分是否合理,是否有重新合并到一个系统/库的必要; 4 )同步一张表到 A 或 B
bubble21
294 天前
@dog82 受教了(抱拳)
bubble21
293 天前
@orzwalker111 第三个项目中只是关联查询,不涉及到业务修改。第四种能实时的话将是不错的方案
boshok
293 天前
方式一,一点也不突兀。
cheng6563
293 天前
视图里慎重使用分组查询等骚操作
bubble21
293 天前
@cheng6563 请兄弟明示,视图刚好有使用分组语句
bubble21
293 天前
@boshok 结果倒是一样,就是写法上有没有规范
cheng6563
293 天前
@bubble21 你多 explain 调试调试,视图里骚操作太多容易索引失效,甚至产生 N+1 查询。

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

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

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

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

© 2021 V2EX