【发布时间】:2016-08-02 11:51:16
【问题描述】:
我想在以下两种场景的性能之间做出决定。
- 我是否应该将 table-2 的相同数据复制到 table-1 创建相同的列并使用简单的 SELECT 查询获取这些数据。
或
- 我是否应该连接两个表并使用 JOIN 获取相同的数据。
我有以下事情可以玩:
- Table-1 --> 超过 300,000 行
- Table-2 --> 超过 200,000 行
- 有两列的复合 PK 是必要的
- 外键索引
- 许多用户 (>50)
- 在每个报告和其他功能中都大量使用表格
【问题讨论】:
-
如果你已经有两个表中的数据,并且可以使用
JOINS提取你需要的内容,那么反规范化并将数据放在一个表中会适得其反。性能从不取决于数据行数。它依赖于高效的表设计、高效的索引和高效的查询 -
感谢 raj 的即时回复。根据规范化规则,它会适得其反,但行数也很重要,查询多少次也对服务器的性能很重要。索引和查询是根据需要适当的。但是当你加入一个表时,每次它都需要用join查询另一个表,如果我只能查询一个表,它不会影响性能吗?
标签: sql-server performance select join indexing