• 售前

  • 售后

热门帖子
入门百科

数据库中identity字段不必是系统产生的唯一值 性能优化方法(新招)

[复制链接]
法克鱿吧吧sw 显示全部楼层 发表于 2021-10-26 14:10:26 |阅读模式 打印 上一主题 下一主题
但是,具有identity特性的字段,不需要具有唯一性,更不必须是主键。

可以通过,set identity_insert tablename (on|off),在运行时控制,是否可以在identity字段中指定值,而不是由体系自动的插入值。

那么,这有什么用处呢。举个例子来说,两个用户之间的聊天,可以有多次,这个用一个chatsession来表示。在数据库中,我们需要三个表: user, chatsession(sessionid identity,...), user_chatsession (userid, sessionid, ...), 来表示这个关系。这内里,多出了一个表chatsession, 其主键sessionid具有identity特性,并且在user_chatsession中被引用。

但是,我们知道,数据库写操纵比读操纵的开销要大很多,假如我想做优化,把chatsession整个的去掉,那应该怎么做呢.

这时,就会用到我说的这一点。首先把 user_chatsession 中的sesssionid变成identity 字段,在插入一个session中的第一个 user-session (for user a)记载时,让体系产生sessionid, 然跋文载下这个sessionid, 在插入一个session中后续的 user-session (for user b, user c...), 实行set identity_insert tablename on,就可以把先前记载的sessionid值插入。

另有别的一个方法,比力笨一点,就是用 select max(sessionid) + 1 from table where userid = @useridA,来得到要新插入的sessionid, 这种方法性能上显然差了很多。

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作