sql-server - 当拥有身份列不是一个好主意时?

标签 sql-server performance

在只需要 1 列作为键且该列中的值可以为整数的表中,何时不应使用标识字段?

相反,在同一个表和列中,您什么时候会手动生成其值并且不会为每条记录使用自动生成的值?

我猜当表中有大量插入和删除时就会出现这种情况。我对吗?还有哪些其他情况?

最佳答案

如果您已经选择 Great Primary Key Debacle 的代理方那么我找不到不使用身份 key 的单一原因。通常的替代方案是 guid(它们有很多缺点,主要是大小和随机性)和应用程序层生成的 key 。但是在应用程序层中创建代理键比看起来要困难一些,而且也不涵盖非应用程序相关的数据访问(即批量加载、导入、其他应用程序等)。一种特殊情况是分布式应用程序,此时 guid 甚至顺序 guid 可以提供站点 id + 身份 key 的更好替代方案。

关于sql-server - 当拥有身份列不是一个好主意时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/932913/

相关文章:

sql - 在sql server中存储图像

ruby-on-rails - Rails 5 升级后性能大幅下降

sql-server - SQL71501 SSDT 未解析的引用 - 比较架构

sql-server - SQL Server if 条件 NULL 检查

performance - SSL 客户端证书验证优化

c# - 如何使用自动化脚本在一天中的不同时间测试我的 Web 应用程序的性能?

multithreading - Rust 的并行扩展性差

c# - 编程语言(Java/C#/C++/Python/…)中不同构造的速度

sql - 是否可以计算 group by 中一列的总和?

sql - text/xmldecl 不在输入的开头