对于模糊的标题感到抱歉。 一个例子:我猜测SO有一个大表,列出所有答案,在一个模式中,如: [问题不,答案否,文字,分] [22,0,“胜利”,3], [22,1,“锡”,4], [23,0,“Pin”,2]
我的问题是,如果有两个表会更好吗:Table_Ques22和Table_Ques23?有人可以列出优缺点吗?
我想到了什么: 多个表的缺点:元存储的开销。 多个表的优点:快速回答查询,查找问题22的所有答案。(我知道有索引,但它们需要时间来构建和维护空间)。
答案 0 :(得分:4)
数据库旨在处理大型表。具有相同结构的多个表引入了许多问题。想到这些:
尽管将所有问题都放在一个表中确实使用了少量额外的存储空间,但您必须将其与使用非常小的表的开销进行平衡。无论数据是10字节还是10千兆字节,包含数据的表必须占用至少一个数据页。如果一个数据页是16千字节,那就是为了支持单个实体的多个表而浪费的大量空间。
至于数据库限制。我甚至不确定数据库是否可以为Stack Overflow上的每个问题支持单独的表。
有一种情况是并行表结构很有用。这就是安全要求要求数据分离的时候,可能是出于客户机密性的原因。但是,这通常是单独的数据库的参数,而不仅仅是单独的表。
答案 1 :(得分:0)
怎么样:SQL Server不是为忽视关系定理基础的人而设的。
你的交叉问题查询存在很多问题,这将完全扼杀所有收益。典型的初学者错误 - 我建议一本关于SQL基础知识的好书。