V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
iyaozhen
V2EX  ›  MySQL

Mysql 批量数据删除的效率问题

  •  
  •   iyaozhen ·
    iyaozhen · 2014-10-16 10:55:07 +08:00 · 5588 次点击
    这是一个创建于 3683 天前的主题,其中的信息可能已经有所发展或是发生改变。
    问题简化:
    表A,表B(不在一个服务器,字段不完全相同)里面有相同字段user_id,两个表同时记录着user的相关操作。现需要把两个表的有用相关操作保留下来,没用的删除。并集,及表A中符合要求的user_id在表B中信息也要保留下来。

    我目前的做法:
    表A需要的user_id和表B需要的user_id在内存中做并集,形成一个list。然后分别去两个表DELETE FROM table WHERE user_id NOT IN (list)。不过每个表都是几百万行,效率太低了。有没有什么更好的方法。

    限制条件:
    由于权限限制无法删除/新建表。
    两个表中的有用信息还要存到本地的库里面。还要select、insert操作。
    不止两个表,大概5-7个,数据都是几百万行。
    3 条回复    2014-10-16 17:32:10 +08:00
    yangqi
        1
    yangqi  
       2014-10-16 11:10:52 +08:00
    最快的就是新建表了吧...不能新建只能delete from没什么好办法啊...
    iyaozhen
        2
    iyaozhen  
    OP
       2014-10-16 14:24:34 +08:00
    @yangqi 哎,线上数据库有限制呀。能删数据都很不错了,哪能建新表呀。
    20150517
        3
    20150517  
       2014-10-16 17:32:10 +08:00
    本地新建表,import上去,权限可以和dba谈啊
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2635 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 01:48 · PVG 09:48 · LAX 17:48 · JFK 20:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.