Sql server 2008 SQL Server 2008中继承的表。性能问题?

Sql server 2008 SQL Server 2008中继承的表。性能问题?,sql-server-2008,single-table-inheritance,Sql Server 2008,Single Table Inheritance,我有一个想法,我一直在我的脑海里思考,基于我在某处读到的另一个概念。基本上,您只有一个包含很少字段的“主”表,其他表通过外键继承该主表。之前已经做了这么多,所以这不是新闻。我想做的是,让数据库中几乎每个表都从主表继承。这样,每个表中的每个对象、每个记录、每个条目都可以有一个完全唯一的主键(因为PK实际上存储在主表中),并且可以简单地通过ID而不是通过表引用 另一个好处是,建立可以接触多个表的关系变得很容易。例如:我有一个事务表,这个表想要有一个FK到它所针对的任何事务(库存、帐户、联系人、订单等

我有一个想法,我一直在我的脑海里思考,基于我在某处读到的另一个概念。基本上,您只有一个包含很少字段的“主”表,其他表通过外键继承该主表。之前已经做了这么多,所以这不是新闻。我想做的是,让数据库中几乎每个表都从主表继承。这样,每个表中的每个对象、每个记录、每个条目都可以有一个完全唯一的主键(因为PK实际上存储在主表中),并且可以简单地通过ID而不是通过表引用

另一个好处是,建立可以接触多个表的关系变得很容易。例如:我有一个事务表,这个表想要有一个FK到它所针对的任何事务(库存、帐户、联系人、订单等)。事务可以只对主表使用一个FK,并通过该FK引用必要的数据段

我脑海中不断浮现的问题是,主表是否会成为瓶颈。这东西在某一点上会有数百万条记录。我知道巨大的记录集可以通过良好的表格设计来处理,但限制是什么

有没有人尝试过类似的事情,你的结果是什么

  • 是的,主表几乎肯定会成为瓶颈
  • 如何实施真正的引用完整性?
    例如,您如何确保交易的FK实际链接到库存、帐户、联系人或订单,而不是苹果、橙色或菠萝
  • 是的,主表几乎肯定会成为瓶颈
  • 如何实施真正的引用完整性?
    例如,您如何确保交易的FK实际链接到库存、帐户、联系人或订单,而不是苹果、橙色或菠萝

  • 我认为这将是一个可怕的瓶颈。不仅如此,这将使强制执行真正的PK/FK关系变得更加困难。这可能会造成数据完整性噩梦。我看不出你从哪里获得任何好处。

    我认为这将是一个可怕的瓶颈。不仅如此,这将使强制执行真正的PK/FK关系变得更加困难。这可能会造成数据完整性噩梦。我看不出你有什么好处。

    你必须考虑这张表会有大量的外键关系。如果要从根表中删除行,这些可能会导致性能问题。(这可能会导致删除时出现一些糟糕的执行计划)

    因此,如果您计划删除行,则可能会影响性能。我最近遇到了这样的设置问题,清理它是一件痛苦的事情(它引用了120个其他表-删除速度非常慢)


    为了克服这个性能问题,您可以考虑不执行约束(坏计划),不使用性能限制(坏计划),或者尝试将属于一个实体的所有数据分组在一行中,并坚持正常的规范化实践(好计划)。你必须考虑这张表会有大量的外键关系。如果要从根表中删除行,这些可能会导致性能问题。(这可能会导致删除时出现一些糟糕的执行计划)

    因此,如果您计划删除行,则可能会影响性能。我最近遇到了这样的设置问题,清理它是一件痛苦的事情(它引用了120个其他表-删除速度非常慢)


    为了克服这一性能问题,您可以考虑不执行约束(坏计划),不使用性能限制(坏计划),或者尝试将属于一个实体的所有数据分组在一行中,并坚持正常的规范化实践(好计划)

    对删除是正确的。即使你知道90%的表都没有数据,数据库还是要检查所有的表。而且这个中心表上的锁也会很痛苦。。。只是不要这样做;)我认为这是一个糟糕的计划,我只是想100%地确定它出了什么问题。我甚至没有想到简单的删除操作会受到怎样的影响。但这就是为什么你问对了吗?男孩,关于删除是真的吗。即使你知道90%的表都没有数据,数据库还是要检查所有的表。而且这个中心表上的锁也会很痛苦。。。只是不要这样做;)我认为这是一个糟糕的计划,我只是想100%地确定它出了什么问题。我甚至没有想到简单的删除操作会受到怎样的影响。但这就是为什么你问对了吗?OP的想法现在是实体框架中的内置功能——不会那么糟糕吧!OP的想法现在是实体框架中的内置功能——不会那么糟糕吧!