数据库中identity字段不必是系统产生的唯一值性能优化方法(新招
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了数据库中identity字段不必是系统产生的唯一值性能优化方法(新招,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1257字,纯文字阅读大概需要2分钟。
内容图文
具有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字段不必是系统产生的唯一值性能优化方法(新招所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。