数据库中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,这种方法性能上显然差了许多。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- SqlServer数据库提示 “tempdb” 的日志已满 问题解决方案
- sql-server – 链接SQL Server之间的安全通信
- SQL Server DBCC CHECKIDENT 重置数据库标识列从某一数值开
- sql – 如何使用pyspark从某些字段分组的给定数据集中获取m
- SQLite 入门教程四 增删改查 有讲究
- sql – 重新排序有序列表
- sql – 什么是rowIDrowNum(ROWID vs ROWNUM)
- 数据库设计 – 针对或将应用程序逻辑放入数据库层的参数是什
- 数据库 – mongodb:我应该在更新时总是使用’safe’选项
- 本地化 – 从数据库字段显示本地化的邮政/物理地址
