SQL Server语言 - 这是使用键链接上下文相关的 SQL 表的最佳方式



假设你有一个dbEngine和一个模式,假设表是A,B和C.B有一个对A的外键引用,C有一个对B的外键引用。现在,假设您必须使用上述外键模式将表一直添加到此架构中,一直到 Z。

使用单个表(我们称之为 Keys)来存储对上下文相关表的引用不是更有效率,其中每个键将返回每个表中的每个非空条目,而不是在每个关联的表中使用外键。

当心重新发明SQL Server。 密钥本身并不高效。 他们没有带回任何东西。 它们限制会违反参照完整性的更新。 您的另一个表Keys不会这样做。 仅凭这一点,它就失败了。

一直到Z

我设计了数千个

表格,编写了数千个查询。 一个查询中的八个表很多。 我怀疑我见过16。 它们倾向于聚集在少数几个周围,而不是被"串起来"在链条中。 我不是说 26 是闻所未闻的,但你的是一个极端的例子。

但是,您的表确实存在于系统表中。 (如果该链接已过期,请在 msdn.microsoft.com 上搜索sys.tables。 DBMS早就需要,嗯,关联表。 它维护有关它们实际和允许的关系的信息,可能使用其工程师能够设计的最有效的内部结构在系统内存中。

对于特定的查询,有时可以"超越系统"并在SQL空间中重做由服务器本身更普遍实现的内容。 不过,通常这是一个错误。这些表只是服务器提供的在 SQL 中无法实现的功能的冰山一角。 通常,最好按预期使用系统,并将DBMS工程留给DBMS工程师。

最新更新