Mysql最佳解决方案 - 两个查询与一个带有附加列的查询

问题描述 投票:0回答:1

哪种解决方案会更好:

1)对数据库进行两次查询,其中第一个查询获取用户标识,第二个查询使用此用户标识查询另一个表。

2)将用户id列添加到第二个表并仅进行一个查询(到第二个选项卡)。这种方式在这个表包含的每一行中存储用户ID是一种很好的实用方法吗?

用户标识列包含整数。

第一个选项将节省更多空间,但速度将慢于第二个选项。在这种情况下你建议使用哪种解决方案?

database performance
1个回答
0
投票

你问的问题实际上是关于规范化和非规范化,答案取决于你打算如何更广泛地使用数据库。

从本质上讲,如果您的数据经常更改并且您希望保证每个人都能始终看到最新数据,那么规范化数据库就很好。如果这是真的,您应该将每个数据项仅保留在一个位置(外键除外),并使用连接来查询数据库。这是您的选择之一,但让MySQL自动为您运行第二个查询 - 查找内部联接语法。

非规范化数据库适用于很少变化的数据,并允许更有效的读取访问,这可能不是最新的,具体取决于您的设计。在这种情况下,您可以在必要时复制数据,并确保在更改时在所有相关位置更新数据。

第二个选项更难以正确构建和维护,所以除非你有一个紧迫的理由,你应该只使用一个带有内连接的查询。

© www.soinside.com 2019 - 2024. All rights reserved.