最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

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

来源:动视网 责编:小采 时间:2020-11-09 09:34:33
文档

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

数据库中identity字段不必是系统产生的唯一值性能优化方法(新招:具有identity特性的字段,其值是系统产生的,自动增加的,所以,一般把这个用在一个表的主键上。 但是,具有identity特性的字段,不需要具有唯一性,更不必须是主键。 可以通过,set identity_insert tablename (on|off),在运行时控制,是否可以
推荐度:
导读数据库中identity字段不必是系统产生的唯一值性能优化方法(新招:具有identity特性的字段,其值是系统产生的,自动增加的,所以,一般把这个用在一个表的主键上。 但是,具有identity特性的字段,不需要具有唯一性,更不必须是主键。 可以通过,set identity_insert tablename (on|off),在运行时控制,是否可以


具有identity特性的字段,其值是系统产生的,自动增加的,所以,一般把这个用在一个表的主键上。

但是,具有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, 这种方法性能上显然差了许多。

文档

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

数据库中identity字段不必是系统产生的唯一值性能优化方法(新招:具有identity特性的字段,其值是系统产生的,自动增加的,所以,一般把这个用在一个表的主键上。 但是,具有identity特性的字段,不需要具有唯一性,更不必须是主键。 可以通过,set identity_insert tablename (on|off),在运行时控制,是否可以
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top