小编Cra*_*son的帖子

SQL Server NUMERIC/DECIMAL精度与存储

考虑MSDN关于SQL Server 2008 R2存储NUMERIC/DECIMAL精度的内容.

精度1到9是5个字节
精度10到19是9个字节

因此,如果我的业务案例在逻辑上要求具有2个小数位的数据类型和5位数的精度,如果我将其定义为NUMERIC(5,2 )NUMERIC(9,2 ),则不会产生实际的性能或存储差异.

考虑到我故意忽略的是隐含的检查约束,因为我很可能在限制实际允许范围的列上设置实际检查约束.

在索引,查询性能或系统的任何其他方面,这会有所不同吗?

sql-server database-design data-structures

17
推荐指数
1
解决办法
5万
查看次数

如何持久计算GEOMETRY或GEOGRAPHY列

我正在尝试在SQL Server 2008下创建一个包含GEOMETRY列及其计算变量的表.

考虑下表,计算列返回缓冲几何:

CREATE TABLE [dbo].[Test] (
    [Geometry]      GEOMETRY    NOT NULL,
    [Buffer]        FLOAT       NOT NULL,
    [BufferedGeometry] AS ([Geometry].STBuffer([Buffer])) PERSISTED
);
Run Code Online (Sandbox Code Playgroud)

这个问题是导致以下错误:

消息4994,级别16,状态1,行2表'Test'中的计算列'BufferedGeometry'不能保留,因为列类型'geometry'是非字节顺序的CLR类型.

我有搜索BOL和网络,似乎无法找到我的问题的解决方案.我真的希望它能够持久化,以便我可以有效地对其进行索引.我可以在代码中设置它,但随后我有可能出现不一致的数据,因为我在某个时间点需要这两个值.

有人玩这个并知道解决方案或解决方法吗?

更新:Microsoft已在SQL Server 2012中添加此功能.

sql-server spatial sql-server-2008

10
推荐指数
1
解决办法
2265
查看次数