有序GUID
目前主流的数据库都有聚集索引的概念,当我们将主键字段使用GUID类型时,
- 无序GUID的字段值 会影响数据行的插入性能
- 有序GUID的字段值 将会有接近int的插入性能
因此建议当使用GUID类型的主键时,使用【有序GUID的字段值】
ClownFish对以下数据库及类型提供了有序GUID的支持(已测试):
- SQLSERVER: UniqueIdentifier 字段类型
- PostgreSQL: uuid 字段类型
- MySQL: char(36) 字段类型
- 达梦: char(36) 字段类型
获取有序GUID的值
Guid guid = dbContext.NewSeqGuid();
使用示例
private static readonly string s_insertSQL = "insert into TestGuid(RowGuid, IntValue) values(@RowGuid, @IntValue)";
private void ExecuteTest(DbContext db)
{
for( int i = 0; i < 1000; i++ ) {
var args = new {
RowGuid = db.NewSeqGuid(),
IntValue = i + 1
};
db.CPQuery.Create(s_insertSQL, args).ExecuteNonQuery();
}
}
说明:
- NewSeqGuid方法会根据 数据库类别 生成有效的【有序GUID的字段值】