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

 更新时间:2011年09月05日 20:14:21   作者:  
具有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, 这种方法性能上显然差了许多。

相关文章

  • 防御SQL注入的方法总结

    防御SQL注入的方法总结

    这篇文章主要讲解了防御SQL注入的方法,介绍了什么是注入,注入的原因是什么,以及如何防御,需要的朋友可以参考下
    2015-08-08
  • sqlserver 多表关联时在where语句中慎用trim()方法

    sqlserver 多表关联时在where语句中慎用trim()方法

    最近做的一个项目由于前期数据库设计不合理,导致多表关联的主外键长度设计不一致,以致过长主外键中过长的字段在填入相同字段时,多余部分被填入空字符。迫于无奈,就在多表关联的where语句中使用了trim()方法。
    2009-09-09
  • 如何强制删除或恢复SQLServer正在使用的数据库

    如何强制删除或恢复SQLServer正在使用的数据库

    如何强制删除或恢复SQLServer正在使用的数据库...
    2007-01-01
  • SQL SERVER 触发器介绍

    SQL SERVER 触发器介绍

    触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程。触发器主要是通过事件进行触发被自动调用执行的。而存储过程可以通过存储过程的名称被调用。
    2013-03-03
  • 简化SQL Server备份与还原到云工作原理及操作方法

    简化SQL Server备份与还原到云工作原理及操作方法

    您可以使用 SQL Server 的本机备份功能来备份您的 SQL Server Database到 Windows AzureBlob 存储服务,也可以使用 T-SQL 和SMO备份到Windows AzureBlob存储,感兴趣的可以了解下本文,或许可以帮助到你
    2013-02-02
  • 分享Sql日期时间格式转换

    分享Sql日期时间格式转换

    这篇文章介绍了Sql日期时间格式转换,有需要的朋友可以参考一下
    2013-08-08
  • 如何开启SqlServer 远程访问

    如何开启SqlServer 远程访问

    这篇文章主要介绍了如何开启SqlServer 远程访问,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-11-11
  • 将Excel数据导入到SQL Server数据库的操作指南

    将Excel数据导入到SQL Server数据库的操作指南

    这篇文章主要介绍了将Excel数据导入到SQL Server数据库的操作指南,文中通过图文结合的方式给大家讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-08-08
  • SQL Server两表数据同步的多种方法详解

    SQL Server两表数据同步的多种方法详解

    这篇文章主要介绍了SQL Server两表数据同步的多种方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-06-06
  • 索引的原理及索引建立的注意事项

    索引的原理及索引建立的注意事项

    聚集索引,数据实际上是按顺序存储的,数据页就在索引页上。就好像参考手册将所有主题按顺序编排一样。一旦找到了所要搜索的数据,就完成了这次搜索,对于非聚集索引,索引是安全独立于数据本身结构的,在索引中找到了寻找的数据,然后通过指针定位到实际的数据
    2012-07-07

最新评论