Sql*_*yan 58 sql sql-server query-optimization schemabinding
我有一个包含数百个笨拙命名表的数据库(CG001T,GH066L等),我对每个人都有"友好"名称的观点(例如,"CUSTOMERS"视图是"SELECT*FROM GG120T") .我想在我的视图中添加"WITH SCHEMABINDING",以便我可以获得与之相关的一些优点,例如能够索引视图,因为少数视图已经计算了动态计算成本昂贵的列.
SCHEMABINDING这些观点是否存在缺点?我发现一些文章含糊地暗示了缺点,但从未详细介绍过它们.我知道一旦视图是模式绑定的,你就不能在没有先删除视图的情况下改变任何会影响视图的内容(例如,列数据类型或排序规则),所以这是一个,但除此之外?似乎索引视图本身的能力远远超过了更仔细地规划模式修改的缺点.
Dan*_*n S 44
您将无法更改/删除表,除非您先删除视图.
use*_*674 31
哦,使用SCHEMABINDING 确实存在明显的下降 - 这些来自实际的SCHEMABINDING,特别是当与COMPUTED列结合"LOCKS"时,关系并使得一些"微不足道的变化"几乎不可能.
祝一切顺利!
好吧,特朗克.真..!?!我的日子刚刚变成了PITA.(现在,像ApexSQL Diff这样的工具可以在提供修改的模式时处理这个问题,但问题是我甚至无法修改模式开始!)
我并不反对SCHEMABINDING,在这种情况下(在这种情况下它需要UDF),但我反对那里没有(我能找到)"临时禁用"SCHEMABINDING的方法.
gbn*_*gbn 27
一个都没有.它更安全.我们到处都用它.
一个缺点是,如果您架构绑定一个视图,它只能引用其他架构绑定视图。
我知道这一点是因为我试图对视图进行架构绑定,但遇到了一条错误消息,告诉我它不能被架构绑定,因为它引用的其他视图之一也不是架构绑定的。
这样做的唯一后果是,如果您突然想要更新架构绑定视图以引用某个新视图或现有视图,您可能还必须架构绑定该新视图或现有视图。在这种情况下,您将无法更新视图,您最好希望您的数据库开发人员知道如何使用模式绑定视图。