[讨论] Join效能请益

楼主: James610024 (littleDog)   2020-05-27 22:43:19
小弟入行约一年,算有点前后端经验。
目前在工作上遇到问题,想请各前辈解惑。
我目前写前端,遇到需要的资料没有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:00
db有这么脆弱吗?XD
作者: yoche2000 (Sushi Desu! 在下寿司)   2020-05-27 23:54:00
现在硬件这么强 会有这么大影响嘛
作者: dennisxkimo (Dennis(一上B就糟糕))   2020-05-27 23:58:00
两种查询方式 用较多资源的 没超过 速度不会差太多随着资料量增长 当查询资源超过资源设定值 就有差了强大硬件 PG跑默认值 就浪费强大硬件资源 (个人见解)
作者: AndCycle (AndCycle)   2020-05-28 00:49:00
写错的架构才会消耗效能, 见过完全没index硬件硬干的db
作者: dennisxkimo (Dennis(一上B就糟糕))   2020-05-28 06:47:00
跑explain analyze分析一下囉
作者: LINGZ (肥兔小钦)   2020-05-28 07:00:00
无须嘴炮,楼上说跑explain就知道无误
作者: dennisxkimo (Dennis(一上B就糟糕))   2020-05-28 12:16:00
前端挂一个挂 vs 后端DB挂 大家一起挂后端的想法会想到 大量使用端共同使用的消耗 不单只是一个查询而已explain可以看出 你是不是超过DBA设定的资源是否超过超过的话pg会用到disk
作者: youtuuube000 (小孩)   2020-06-03 04:06:00
打3发请求不也是SQL查询三次吗?若他说data量太大我还能理解 还是我有什么误会?
作者: laputaflutin (很恐怖,不要问)   2020-06-04 00:09:00
发3次是在不同的session? connection也很珍贵欸

Links booklink

Contact Us: admin [ a t ] ucptt.com