SQL 中Guid 怎么优化?

SQL 中Guid 怎么优化?,第1张

1、生成我觉得可以先预生成一定数量的GUID备用,然后使用时候,从这个表取。如果表的使用量低于50%,则自动填满。

2、GUID是由网卡地址和CPU时间戳生成的,很可能前面都是重复的部分,完全可以忽略重复的,比较不重复的做索引排序依据。

int做主键,那么是子增长的,在数据库就按照有序的顺序来存储。但在如果不做特殊处理,在URL上直接显示会被人猜处理,导致数据被非法查看。

Guid是散列话的,这样数据不是有序的而是随机写,效率会比int的差点。但是没有int的数据的问题,最少不明显

如果主键是Guid,数据库给主键列以newid()的默认值,EF也会将主键值返回并更新模型的对应属性的,前提是要在EF中Mapping类中要设置

this.Property(t =>t.TipID).HasDatabaseGeneratedOptio(DatabaseGeneratedOption.Identity)

此时生成的SQL语句和自增长的有所不同

exec sp_executesql N'declare @generated_keys table([TipID] uniqueidentifier)

insert [dbo].[Tips]([Description])

output inserted.[TipID] into @generated_keys

values (@0)

select t.[TipID]

from @generated_keys as g join [dbo].[Tips] as t on g.[TipID] = t.[TipID]

where @@ROWCOUNT >0',N'@0 nvarchar(max) ',@0=N'testing'

注意:这里定义了一个表变量@generated_keys,插入的时候将id输出给@generated_keys表的字段,

这里values (@0)是针对insert [dbo].[Tips]([Description]) 而言的,先执行insert

再执行output inserted.[TipID] into @generated_keys 将插入的id输出到@generated_keys 中

EF真的是太强大了,可以模仿EF生成SQL语句,这极大地提升本人写SQL的水平,Entity Framework生成的SQL是很有水平的!

这样就可以返回刚新插入的主键值!


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/570001.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-07-03
下一篇2023-07-03

发表评论

登录后才能评论

评论列表(0条)

    保存