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

本文关键字:插入 一个 | 更新日期: 2023-09-27 17:56:38

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

以下哪项在插入和选择中更快?

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

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

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

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

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

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

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

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

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

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

相关文章: