始终连接 SQL 表是一种好习惯吗?
Posted
技术标签:
【中文标题】始终连接 SQL 表是一种好习惯吗?【英文标题】:Is it a good practice to always join SQL tables? 【发布时间】:2017-01-24 07:07:38 【问题描述】:我正在编写一个 Web 应用程序,使用 sequelize
作为我的 SQL 数据库 (PostgreSQL
) 的 ORM。
我在 MongoDB
而不是 SQL 数据库方面有更多经验,并且我一直在寻找一种在一个请求中查询完整模型的方法。
假设我有一个User
和Comment
模型,而User
可能有很多Comment
s。
我将Comment
和User
保存在不同的表中(它们也被分成不同的表)。
当我想查询User
时,是否应该使用join
创建查询以获取 cmets?
在每个查询上执行所有模型关系之间的完全连接是好还是坏的做法?
【问题讨论】:
在表之间进行连接是完全正常的;这就是创建关系数据库的目的。您可以在连接列上添加索引以获得更好的性能。 如果您使用的是 ORM,您认为您应该直接查询数据库吗?让 ORM 处理数据层的查询 - 利用 ORM 并让它完成它的工作。 是的,我当然会利用 orm 并且不会自己编写,但我仍然需要告诉 orm 执行 join。 【参考方案1】:使用 JOINS,您可以通过一个查询从任意数量的表中准确获取所需的数据,使用您选择的任何搜索参数来过滤结果。 mysql 还可以利用诸如索引之类的东西来最大化性能,而您的 API 代码则不能。
一般来说,执行多个查询并使用某种 API(例如 php)来过滤结果会给服务器带来更多开销。更多的数据必须在 MySQL 和 API 之间来回发送,更不用说 MySQL 是为优化性能而构建的,在处理每个开发人员的 API 代码时无法保证这一点。
所以在你的情况下,加入用户评论。
【讨论】:
以上是关于始终连接 SQL 表是一种好习惯吗?的主要内容,如果未能解决你的问题,请参考以下文章
使用 MongoDB 数据库为每个查询打开一个新连接是一种好习惯吗?