zoukankan      html  css  js  c++  java
  • mysql优化 ON DUPLICATE KEY UPDATE

    场景:
    比如,有一张表,专门记录业务里的唯一数据记录,这张表里如果存在此唯一数据的记录就更新此行数据的某个字段,如果此唯一数据不存在,那么就添加一条最新数据。

    一贯操作:如果不知道mysql有 ON DUPLICATE KEY UPDATE 这种操作的话,一般的做法都是先select此表,如果存在就update,不存在的话就insert数据 ,这样做在高并发的场景下,是两条sql,会大大增加数据库负担。


    优化: ON DUPLICATE KEY UPDATE ,一条语句完成以上两步操作。


    简单举例:比如,记录用户登陆的最后IP和时间

    CREATE TABLE `last_login_log` (
      `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
      `username` varchar(255) DEFAULT NULL,
      `ip_addr` varchar(255) DEFAULT NULL,
      `update_time` datetime DEFAULT NULL,
      PRIMARY KEY (`id`),
      UNIQUE KEY `username` (`username`) USING BTREE
    ) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
    INSERT INTO last_login_log (
        username,
        ip_addr,
        update_time
    )
    VALUES
        (
            '菜鸟一号',
            '192.122.4.4',
            NOW()
        ) ON DUPLICATE KEY UPDATE update_time = now(), ip_addr = '192.122.4.6';

    自己拿以上语句测试一下,多执行几遍观察

    参考:https://blog.csdn.net/u014287775/article/details/80509775

              https://www.cnblogs.com/zjdxr-up/p/8319982.html

              https://www.cnblogs.com/rocky-AGE-24/p/7392641.html

  • 相关阅读:
    Datazen地图Chart自定义数据
    Datazen地图Chart介绍
    TFS Express backup and restore
    [BI项目记]-TFS Express备份和恢复
    [BI项目记]-新任务处理
    [BI项目记]-新任务创建
    Datazen图表创建和发布
    开闭原则(OCP)
    Fragment XXX not attached to Activity
    问题解决:Fragment not attached to Activity
  • 原文地址:https://www.cnblogs.com/wt645631686/p/8456361.html
Copyright © 2011-2022 走看看