背景
我们最初开发了一个使用GUID作为PK并默认标记为Entity Framework的聚集索引的系统(我知道...)。我现在意识到这可能会影响数据库插入性能,特别是因为GUID被用作聚集索引。
我做了一些研究,找到了很多有用的信息,但我仍然不确定应该如何解决这个问题。此外,如果我们决定从GUID PK转换为INT,则有一个包含近一百万行的生产数据库需要迁移。
问题:
另一种解决方案是将聚集索引更改为另一列(例如:DateTime),但如果我们的连接主要使用PK,那么这将带来多少性能差异?
开始使用顺序guid(NHibernate Comb),但是如果我们现有的guid不是连续的,那么如果我们只是为新行开始使用顺序guid,它会产生影响吗?
如果最佳解决方案是从GUID迁移到INT,那么是否可以使用Entity Code-First Migrations进行操作(如果可能的话)?
我现在是否应该担心这个问题?也许这是预优化,但数据库正在快速增长,我不想在2-3百万行后才发现我们必须尽快解决它。
限制条件
- MSSQL(托管在Azure SQL上)
- Entity Framework Code-First Migrations(最好)
- 需要迁移的现有数据库
我感谢任何有建设性的反馈,可以帮助我做出正确的决定。我不需要一个详细的解决方案,只需要一些指导,指引我走向正确的道路。