sql-server – 为什么Denali序列应该比标识列表现更好?
|
在他对 Which is better: identity columns or generated unique id values? mrdenny的回答中说:
我不确定.知道了Oracle的序列,我要么为insert创建一个触发器,将每个插入封装到一个存储过程的调用中,或者祈祷我在执行ad-hoc插入时不要忘记正确使用该序列. 我怀疑序列的优点是如此明显. 解决方法我也会在这里回答.它与IDENTITY和SEQUENCE如何工作的内部有关.使用IDENTITY,SQL Server将值预先缓存到内存中,以便它们随时可用.有关详细信息,请参阅Martin Smith’s answer.使用值时,后台进程会生成更多值.您可以想象这个池可以很快耗尽,让应用程序受到生成值的后台进程的支配. 使用SEQUENCE,SQL Server允许您定义缓存的大小.虽然SQL Server实际上并未将值保留在缓存中,但它只保留当前值和最高值,这将大大减少创建值所需的IO量. 不要将缓存设置得太高,因为这会减少可以使用的数字的数量:如果SQL Server崩溃,则当前缓存范围中指定的未使用的任何值都将丢失. 对于行插入,只需为列指定默认值,如下所示: DEFAULT (NEXT VALUE FOR Audit.EventCounter), (编辑:天瑞地安资讯网_黄海网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 如何在LINQ-To-SQL中手动设置标识字段(IDENTITY INSERT)
- sql – 由于arithabort设置不正确而失败
- sql – 查询滚动日期范围内不同值的计数
- sql-server – 将一组行转换为SQL Server 2000中的列
- sql-server – 数据库’owner’的目的是什么?
- sql – oracle中Like vs Contains()之间的搜索条件差异
- Sql Server 视图数据的增删改查方法
- sql-server – 你能解释一下这个执行计划吗?
- W3C教程(11):W3C DOM 活动
- sql-server – 如何以非弃用的方式从VBA访问SQL Server?
- sql-server-2008-r2 – UAT和PROD服务器上执行计
- sql – ORA-00904解码别名上的无效标识符
- sql-server – 为什么使用int作为查找表的主键?
- sql – 复杂的字段“string – number – string
- sql-server – SQL Server ROWLOCK over SELECT如
- sql server怎样写查询语句?聊聊查询性能问题
- sql – 带xmlns的OPENXML:dt
- 命令行 – 学习SQL艰难的方法 – 在SQL Lite 3中
- sql – 如何在postgres中创建ISO-8601格里高利日
- sql-server – 每次执行触发器编译吗?


