• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > 数据库中identity字段不必是系统产生的唯一值 性能优化方法(新招

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

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了identity,唯一值等相关知识,希望本文的分享对您有所帮助

具有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, 这种方法性能上显然差了许多。
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Mysql中Identity 详细介绍
  • sql语句返回主键SCOPE_IDENTITY()
  • 数据库中identity字段不必是系统产生的唯一值 性能优化方法(新招
  • 把数据批量插入具有Identity列的表的方法
  • 对有insert触发器表取IDENTITY值时发现的问题
  • sql Set IDENTITY_INSERT的用法
  • 在SQL Server数据库中为标识(IDENTITY)列插入显式值

相关文章

  • 2018-12-05详解MySQL的简单使用和JDBC示例代码分享
  • 2018-12-05MySQL数据库如何允许远程连接?
  • 2018-12-05MySQL几点重要的性能指标计算和优化的方法代码总结
  • 2018-12-05Sqlserver2000 数据库备份实例代码
  • 2018-12-05oracle 安装与SQLPLUS简单用法
  • 2017-05-11mysql把主键定义为自动增长标识符类型
  • 2018-12-05深入了解mysql中4类隔离级别
  • 2017-05-11MySQL查询优化之explain的深入解析
  • 2017-05-11运用mysqldump 工具时需要注意的问题
  • 2017-05-11MySQL Where 条件语句介绍和运算符小结

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • mysql中关于char和varchar的区别
    • 关于mysql权限与安全详解
    • MySQL入门之事务概念
    • SQL数据操作基础(中级)8
    • 关于mysqli_affected_rows()函数的详细介绍
    • mysql数据库重命名语句分享
    • 如何实现MySQL降权操作的详解
    • SQL Server 2012 错误处理增强THROW
    • SQL Server连接中三个常见的错误分析
    • Oracle动态交叉表生成

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有