› 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
revlis7
V2EX  ›  MySQL

从一张表垂直拆分成多张表的问题

  •  
  •   revlis7 · Jun 19, 2013 · 5207 views
    This topic created in 4850 days ago, the information mentioned may be changed or developed.
    假定有一张user表,因为字段太多,打算将user表中的各个字段拆分到user_account、user_information、user_status等若干张表。

    现在要做的就是将原来user表里的数据,导入到这些新表中去。但是由于原来user表内数据太多,如果每张新表都单独执行导入sql的话,那么每次执行都要遍历一次user表,感觉效率很低。有没有办法可以直接取完一条user的数据后,直接插入新的N张表中,这样只遍历一次user表就可以完成?
    9 replies  •  1970-01-01 08:00:00 +08:00
    wayn3h0
        1
    wayn3h0  
       Jun 19, 2013   ❤️ 1
    1. 遍历一次 执行三个命令
    2. 遍历三次 每次执行一个命令

    你自个不是说的很明白了么。。。不明白你的疑问在哪里啊在哪里
    likuku
        2
    likuku  
       Jun 19, 2013   ❤️ 1
    「有没有办法可以直接取完一条user的数据后,直接插入新的N张表中,这样只遍历一次user表就可以完成?」

    写程序实现嘛,这种指望依靠MYSQL自身的SQL语言来搞不太现实。
    xiaogui
        3
    xiaogui  
       Jun 19, 2013   ❤️ 1
    1、写程序,分别生成需导至 user_account、 user_information、 user_status等表的 sql 语句;
    2、然后分别执行各表若干条 sql 语句。比如将需导入 user_account 表的每 1000 sql 语句导入一次,可以有效降低 sql 语句执行时间。
    另考虑中间中断问题,可以使用事务。
    msg7086
        4
    msg7086  
       Jun 20, 2013   ❤️ 1
    如果是myiasm的话可以file copy+drop column
    rpx
        5
    rpx  
       Jun 20, 2013   ❤️ 1
    找个etl工具几下搞定。
    推荐kettle
    Xrong
        6
    Xrong  
       Jun 20, 2013   ❤️ 1
    用php全部读取出来,然后做判断插入各自表中?渣思路路过...
    revlis7
        7
    revlis7  
    OP
       Jun 20, 2013
    本来想用一条SQL搞定N张表

    看来只有用另外的脚本去跑了

    thanks anyway.
    xiaogui
        8
    xiaogui  
       Jun 20, 2013
    @revlis7 减少数据库操作的时间主要是多条 sql 语句一次导入。如果数据量不是很大的话
    可采用 @msg7086 的方法
    ldehai
        9
    ldehai  
       Jun 21, 2013
    楼主想多了,这种一次性的任务不用这么担心效率吧,慢就慢点。有想的功夫都导完了。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4574 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 58ms · UTC 05:47 · PVG 13:47 · LAX 22:47 · JFK 01:47
    ♥ Do have faith in what you're doing.