这里正在进行一场冗长的辩论,所以我想听听其他意见。
我有许多带有 uniqueidentifier 聚集 PK 的表。这是否是一个好主意超出了这里的范围(并且不会很快改变)。
现在,必须合并发布数据库,并且 DEV 提倡使用单独的 rowguid 列,而不是将现有的 PK 标记为 ROWGUIDCOL。
基本上,他们说应用程序永远不应该将仅由复制使用的东西带入其域(这对他们来说只是“DBA 的东西”)。
从性能的角度来看,我认为没有理由添加一个新列来做一些我可以用现有列做的事情。而且,既然只是“DBA 的东西”,为什么不让DBA 选择呢?
我有点理解 DEV 的观点,但我仍然不同意。
想法?
编辑:我只想补充一点,我在这场辩论中是少数,质疑我立场的开发者是我尊重和信任的人。这就是我求助于征求意见的原因。
我也可能遗漏了一些东西,并且可能误解了他们的观点。
当我尝试在文件流列上创建统计信息时,我收到以下错误消息:
表 'MyTable' 中的列 'MyColumn' 的类型不能用作索引或统计信息中的键列。
这记录在CREATE STATISTICS的 BOL 页面中,这不是问题。
但是,当我在列(IS NOT NULL, 为记录)上运行带有谓词的查询时,会自动创建统计信息。为什么手动创建不允许这样做,但自动创建仍然可以?
我想手动创建统计数据的原因是我想标记它NORECOMPUTE以避免扫描几GB的数据。我知道我可以让 SQL Server 自动创建它然后NORECOMPUTE稍后标记它,但是自动创建是使用默认示例触发的,我可以0 ROWS在手动创建中覆盖它。我也想知道这是否有原因。