繁体   English   中英

将多个行插入到一个表中还是将行分别插入到多个表中?

[英]Insert many rows to one table OR insert rows separately to many table?

我有两个数据库表(SQL CE)。 教师表和A 表。 这两个表具有一对多关系,其中一位老师有很多班(即Class有一个外键Teacher_id )。 在运行时通过C#代码插入(或生成)的教师(行)数,如上课

在INSERT和SELECT中,以下哪个更快?

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

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

不管哪种方法都更快,但是(2)是最好的方法。...只需创建索引即可支持您的搜索。 这就是几乎所有关系数据库都被使用的方式。

维护选项(1)的噩梦让我发抖

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

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

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

我也同意米奇·麦特(Mitch Wheat)的观点。 因为当您创建索引时,您的表在物理上根据我们的教师正在创建(Teacher_Id,Class_Id)的组合索引进行排序。 尽管它将有助于快速检索“选择陈述”。

除非您已经遇到性能问题,否则我不会担心它们。 除了行数以外,还有很多其他会导致性能问题的因素,应根据行的内容对它们进行不同的处理。 您不必担心表中影响性能的列数,而要担心行数。 以及与数据库的并发连接数。 一个表中的一百万行不是很多,是其他两项与那么多行一起使数据库变慢。 您应该使用第二个选项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM