Sql server 从SQL Server表中检索额外的行时是否会有更多额外的开销

Sql server 从SQL Server表中检索额外的行时是否会有更多额外的开销,sql-server,Sql Server,我有两个班,一个是大师班,一个是问题清单,一个是细节班,一个是答案清单。每个问题可以有一个或多个答案 我有两个选择,我想了解一下哪一个最好: 将问题数据存储在问题表中。获取答案,创建一个JSON字符串 并将其添加到问题表中的字段中。检索数据时 从表中,我可以将JSON字符串转换回包含 答案清单 将问题数据存储在问题表中,并将答案数据存储在中的多行中 答案表 与: 只要在数据库中查找问题表,就可以检索到所有内容 一个数据库查找问题数据,多个数据库查找答案 我认为(1)会更快,(2)会更容易管理 第

我有两个班,一个是大师班,一个是问题清单,一个是细节班,一个是答案清单。每个问题可以有一个或多个答案

我有两个选择,我想了解一下哪一个最好:

  • 将问题数据存储在问题表中。获取答案,创建一个JSON字符串 并将其添加到问题表中的字段中。检索数据时 从表中,我可以将JSON字符串转换回包含 答案清单
  • 将问题数据存储在问题表中,并将答案数据存储在中的多行中 答案表
  • 与:

  • 只要在数据库中查找问题表,就可以检索到所有内容
  • 一个数据库查找问题数据,多个数据库查找答案
  • 我认为(1)会更快,(2)会更容易管理


    第二种方法(2)需要从问题表中检索数据,然后从答案表中多次检索数据。对于SQL server,假设通过主键从表中获取数据大约10毫秒是否合理?从答案表中获取数据,然后再从每一行中获取数据,怎么样。我只是不知道可能要花多少时间,如果能提供任何建议,我将不胜感激

    您可以简单地使用SQL Join语句来检索问题以及所有相应的答案

    Select * from Questions inner join Answers on Questions.ID = Answers.QuestionID
    

    举个例子。

    我担心的是它的性能。执行作业需要对第二个表进行多行访问,我不确定需要多少额外开销。对不起,我不明白为什么需要分别访问第二个表中的每个条目?连接避免了这一点,编辑或插入答案也是一个操作。连接是基本sql,引擎为此任务进行了优化。如果在关键列上检索很昂贵,请使用索引。我想我的想法是,如果有12个答案,那么每个答案表行需要额外的12个磁盘访问。不,数据库不是这样组织的。当然会有IO,但正确索引可以避免太多的表扫描。使用正确的索引将在叶级组织集群,从而提供最佳性能。如果您的场景没有那么大,那么这些类型的选择不会显著影响性能。