【问题标题】:Oledb and Access. Should use Inner Join or C# loop?Oledb 和访问。应该使用内部联接还是 C# 循环?
【发布时间】:2017-06-30 22:13:51
【问题描述】:

我已经重新开始了旧项目的工作。这是一个有 6 个表的 access 数据库。其中之一是主表 TableA。这是它的工作原理。

TableA 与 TableB、TableC 和 TableD 是一对多的。

TableD 与 TableE 是一对多的。

TableE 与 TableF 是一对多的。

在任何时候我只需要表 A 中的 1 条记录,但总是需要表 B、C、D、E 和 F 中的相关记录。

我可以对表 B 和 C 进行单独的 Select 调用,但是表 D 的关系很有趣。对于表 A 中的每条记录,表 D 将有 4 到 5 条记录。对于表 D 中的每条记录,表 E 将有 4 到 5 条记录。对于表 E 中的每条记录,表 F 可能有超过 100 条记录。

我最终需要向最终用户展示的信息:表 A、B、C 和 D 中的信息。表 E 中的信息必须按表 D 分组(我使用的是组合框),表 F 中的信息必须分组由表 E(也是一个组合框)然后分成 4 组中的 1 组。

目前我有一个数据库接口类,它可以进行所有数据库调用并返回一个绑定列表。我最近开发了一个 SQL 查询,它在 TableD、TableE 和 TableF 上执行内连接,我想我会遍历返回的记录,小心地创建我的 6 个单独的 BindingList。

我的问题:如何才能做得更好,同时避免过多的数据库命中?我是否错误地认为内部连接会比 4 个单独的数据库调用更好?

【问题讨论】:

  • 我没有完全按照你的数据,因为我看不到它,但我建议你在数据库中做尽可能多的繁重工作,因为这是它的本意.
  • 谢谢蒂姆!我会尽快为数据库创建一个视觉模型。

标签: c# sql ms-access oledb


【解决方案1】:

这不是您应该担心的 DB 命中数。首先担心使用正确的工具来完成工作。在加入时,关系数据库非常复杂。最大限度地使用它。 Crazy 是在数据库之外进行连接的唯一词。

如果你使用QueryFirst,编写 SQL 来连接 5 个表会更有趣(免责声明:我写的)

【讨论】:

    猜你喜欢
    • 2021-01-05
    • 2010-09-13
    • 1970-01-01
    • 1970-01-01
    • 2014-03-24
    • 2011-04-14
    • 2012-02-15
    • 2014-03-18
    • 2021-02-03
    相关资源
    最近更新 更多