小弟入行约一年,算有点前后端经验。
目前在工作上遇到问题,想请各前辈解惑。
我目前写前端,遇到需要的资料没有API时,
会开需求给我们后端工程师。
假设我今日要查询的是:
该名学生的班级、导师、导师教授科目,三种
在已知学生的id情况,查寻上述三种资料。
都为一对一,且必须依序查班级、导师、导师教授科目查询。
问题来了,
我的直觉是用学生id查询所属班级,并join导师及导师教授科目,用一个Request查询所
需资料。
后端工程师却觉得join很消耗DB效能,必须把效能留在新增删除修改这类的地方,要我多
发两次请求查询(导师、导师教授科目),对DB较无负担。
再者,请他分三次SQL查询,他说Java后端是同步语法,在等待SQL查询回来时Thread会卡
在那不做事,查三个很浪费时间。
然后我自己写SQL测试查询速度,发现不管有没有join资料表,查询速度皆差不到2ms
他的回应是join会使用更多的系统资源,所以查询速度会差不多
这里想请问,join真的很消耗效能吗?
备注:前端-vue,后端-Spring Boot,DB-PostgreSQL
作者:
criky (2501-2)
2020-05-27 23:39:00db有这么脆弱吗?XD
作者:
yoche2000 (Sushi Desu! 在下寿司)
2020-05-27 23:54:00现在硬件这么强 会有这么大影响嘛
两种查询方式 用较多资源的 没超过 速度不会差太多随着资料量增长 当查询资源超过资源设定值 就有差了强大硬件 PG跑默认值 就浪费强大硬件资源 (个人见解)
作者:
AndCycle (AndCycle)
2020-05-28 00:49:00写错的架构才会消耗效能, 见过完全没index硬件硬干的db
作者:
LINGZ (肥兔小钦)
2020-05-28 07:00:00无须嘴炮,楼上说跑explain就知道无误
前端挂一个挂 vs 后端DB挂 大家一起挂后端的想法会想到 大量使用端共同使用的消耗 不单只是一个查询而已explain可以看出 你是不是超过DBA设定的资源是否超过超过的话pg会用到disk
打3发请求不也是SQL查询三次吗?若他说data量太大我还能理解 还是我有什么误会?
发3次是在不同的session? connection也很珍贵欸