在一个表中插入多行或者将行分别插入到多个表中?

时间:2011-05-14 03:31:59

标签: c# database sql-server-ce

我有两个DataBase表(SQL CE)。 教师表和A 表。这两个表具有一对多关系,其中一个教师有许多类(即具有外键 teacher_id )。在运行时通过C#代码插入(或生成)教师(行)的数量,以及类

以下哪项在INSERT和SELECT中更快?

  1. 每次插入新教师时,都会创建一个新的班级表(例如Class_teacher001)来存储教师所拥有的任何班级。在这种情况下,每个类表都不必太大,不需要外键,因为表名会标识自己。但是会有一个教师表和许多Class_xxx表

  2. 只有一个Teacher表和一个Class表。每个类行都有一个指向Teacher表的外键。只有一个Class表,但它会变得很长。我担心搜索和阅读会很慢

4 个答案:

答案 0 :(得分:5)

无论哪个更快,(2)是要走的路....只需创建索引来支持您的搜索。这就是几乎所有关系数据库的使用方式。

维持选项(1)的噩梦让我不寒而栗

答案 1 :(得分:1)

好的,从哪里开始。首先,教师和班级之间的关系可能是多对多的,但正如你所描述的那样至少是一对多。

第一种选择绝对是错误的选择。永远不要动态创建表。第二种选择是如何处理这种事情。数据库功能强大,由非常聪明的人(通常)编写,并且可以处理比特定学校的所有学生更多的行。

只要您正确索引表格,它们就可以轻松支持数亿条记录。

答案 2 :(得分:0)

我也同意米奇麦。因为当您创建索引时,您的表会根据我们的教师进行物理排序。创建组合索引(Teacher_Id,Class_Id)。 虽然它有助于快速检索选择状态。

答案 3 :(得分:0)

除非您已经遇到性能问题,否则我不会担心它们。除了行数之外,有许多事情可能导致性能问题,并且应该根据它们的不同来处理它们。您需要更多地担心表中影响性能的列数,而不是关于行数。也是数据库的并发连接数。表中的一百万行并不多,其他两个项与许多行相结合会使数据库变慢。你应该使用第二个选项。