aba*_*hev 5 t-sql sql-server performance sql-types sql-server-2008
我正在重构数据库(SQL Server 2008)方案,并收集参数以更改NCHAR(1)列(保留Y|N值)BIT.每个人都明白这是必要的,不知道它为什么会发生,但这种变化会影响生产数据库,因此需要重要的参数.表保留地址目录(最多1米的记录).
我找到的第一个参数 - 每个nchar字段占用2个字节,每个8 位字段 - 1个字节(接下来的8个 - 另外1个字节).
下一步是什么?也许一些索引性能问题?
And*_*rew 10
除非你有充分的理由做出改变,否则我会毫不犹豫地为这种改变提供任何论据.也就是说,你必须平衡变化的成本与你个人所做/喜欢的成本,实际实施成本和效益之间的平衡.
您是否检查过使用nchar(1)是否会影响性能,还是会陷入过早优化的陷阱?你这里只谈论100万条记录.
对于您认为会产生的次要存储/ IO成本,请考虑更改,重新测试和升级系统的总工时*每小时费率与仅购买更快磁盘的成本.我怀疑磁盘会更便宜 - 并且有益于系统的各个方面.
找到NCHAR(1)而不是位的一个常见原因是Oracle不支持位类型.如果您有Oracle或Oracle培训的开发人员,或者曾经在Oracle上运行的数据库,那么您将会看到很多.在Sql Server中,确实没有必要这样做.
但是,我发现大多数我有一点字段的地方(或Oracle中的NCHAR(1))我真正想要的是一个日期时间,它表示没有那么多的标志值,但确切地说它是真的.这并不总是那种情况,但是当我回想起我编写的旧代码时,我猜我曾经使用过一段时间的5次中有4次我应该使用日期时间.
位字段通过自动强制执行当前隐式业务规则来帮助您的逻辑(即,此列只能包含'Y'或'N').如果您以编程方式强制执行该规则,则可以通过消除此开销来节省.由于基数较低,索引一个位列本身几乎没有价值,但它可以作为复合索引的一部分.
也可以看看:
| 归档时间: |
|
| 查看次数: |
2312 次 |
| 最近记录: |