主键的SQL Server BIGINT或DECIMAL(18,0)
|
我们有一个SQL Server 2005数据库,我们想要提高批量删除/插入/选择的性能,我注意到它的主键使用十进制(18,0).我知道这将给我们提供比bigint更多的价值,但希望它可能是一个快速的胜利,并且应该通过我的计算让我们持续数百万年的增长. 我在.net docs小数中看到16个字节而不是long需要的8个字节,但在SQL Server中它看起来像bigint take 8 bytes但小数(18,0)仅占用5 bytes – 如同选择DATALENGTH(max(id)所见)从表.它是否正确? 有没有其他原因bigint可能会更慢或我应该坚持十进制(18,0)? 解决方法在计算字节数之前,DATALENGTH会转换为varchar.所以你的最大值是< 100000. 用这个可以证明9个字节. sys.columns有一个max_length列(十进制是固定长度所以它总是9个字节,在你另外要求之前)CREATE TABLE dbo.foo (bar decimal(18,0))
GO
SELECT * FROM sys.columns WHERE object_id = OBJECT_ID('foo')
GO
DROP TABLE dbo.foo
GO
由于遗留原因,在使用SQL Server 2000添加bigint之前,十进制(18,0)通常用作“64位整数”的代理. 十进制(18,0)和bigint在范围内大致相同:根据文档,十进制是9字节多一个字节 最重要的是,普通整数将比小数快一些(可能不可测量).如果说,如果预计明年或5年将有超过40亿行,那么表现应该很重要.如果没有,那么只需使用int (编辑:海洋资讯信息网_我爱站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- SQL语句练习实例技巧——找出最近的两次晋升日期与工资额
- sql-server – Microsoft SQL Server的拥有架构和角色成员资
- sql自定义函数有何用处?与存储过程区别在哪?
- sql中identity自增的方法是什么?
- sql-server – 当.sql脚本失败时,如何使sqlcmd返回0以外的E
- ssis – 如何在Foreach文件枚举器上为FileSpec属性设置表达
- sql-server – 在哪里使用外部应用
- sql-server – 每次执行触发器编译吗?
- decode函数在sql中如何使用?作用你了解吗?
- sql-server – 在同一个VM上运行2个SQL Server 2014实例是否
- GROUP BY中的SQL ORDER BY总计
- sql-server – 我可以从SQL Server默认获得哪些事
- 数据库 – Django:如何为异构数据类型树建模?
- sql – 深度嵌套的子查询因子分解(CTE)的性能降低
- sql-server – 如何在SQL Server 2008中分配整个
- sql – Oracle Analytic函数 – 重置窗口子句
- sql – 使用IN Clause在动态查询中需要帮助
- sql-server-2005 – 用户定义的函数输出进行Nhib
- sql-server – 查找表有哪些更易读的命名约定?
- sql-server – 在我的本地计算机上通过SQL Serve

