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

时间:2018-04-01 18:51:54

标签: database performance

哪种解决方案会更好:

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

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

用户ID列包含整数。

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

1 个答案:

答案 0 :(得分:0)

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

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

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

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