哪个是使用键链接上下文相关的sql表的最佳方法?

时间:2016-07-06 13:36:08

标签: sql sql-server tsql

假设你有一个dbEngine和一个模式,让我们说这些表是A,B和C.B有一个外键引用A,而C有一个外键引用B现在让我们假设您必须使用上述外键模式将表添加到此模式中,直到Z.

使用单个表是不是更有效,让它称之为Keys,以存储对上下文相关表的引用,其中每个键将带回每个表中的每个非null条目,而不是使用每个关联表中的外键。

1 个答案:

答案 0 :(得分:2)

小心重新发明SQL Server。 Keys 本身并不高效。他们不会带回任何东西。他们限制会违反参照完整性的更新。你的另一张表 Keys 不会这样做。它仅在此基础上失败。

  

直到Z

我设计了数千个表并编写了数千个查询。查询中的八个表很多。我怀疑自己曾经看过16.他们倾向于聚集在一起,而不是"串联出来"在一个链。我不是说26是闻所未闻的,但你的是一个极端的例子。

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

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