表A里面有2亿条数据,现在建立一个与表A结构一样的表B,然后把表A里面的数据插入到表B,那种方式能够快速有效的插入。A表和B表都建有索引

解决方案 »

  1.   

    insert into B
    select * from A不过这么大的数据量效率无法保证
      

  2.   

    什么引擎?
    如果是myisam的话,直接拷贝文件最快了
      

  3.   

    1 不要理索引先,使用mysqldump把数据到出来先。
    2 再使用mysqlimport 进行导入。
    3 若发现索引不对或者不正常,进行索引重建。
    4 再运行表优化命令这样应该可以使表数据完全Copy 到表 B
      

  4.   

    我用的数据库是Microsoft SQL Server 2008
      

  5.   


    Microsoft SQL Server 2008用insert ... select ...的方法应该不会慢吧如果是把一个表的数据导入另外一个表,然后删除原表的话,可以考虑直接重命名表名
      

  6.   

    DTS?机器性能还可以的话,insert select
    否则,导出文本。导入文本。貌似有个复制表的东东?没用过
    折腾2亿记录的表,何必呢。
      

  7.   

    两张表倒,貌似只有用insert ... select ...的方法,如果是数据库倒,倒是可以用直接拷贝数据文件的方法。
      

  8.   

    楼主 
    如是使用SQL Server 可以尝试下BCP命令。 在MS SQL 服务端上使用BCP 命令,导出整个表的数据
    1 以Administrator 登入 MS SQL 数据库。
    2 开启CMD 命令窗口
    3 检查C盘的磁盘空间是否有足够空闲,若有则不需要修改下面语句的路径。若无,请修改磁盘空间空闲比较大的盘符存储。
    4 下面为导出运行语句:
    bcp 【DBNAME】.dbo.【TABLENAME】out 【FILEPATH】【FILENAME】 -T –o 【LOGFILEPATH】【LOGFILENAME】–n -S 【SERVERNAME】 -P 【PASSWORD】 -U 【USERNAME】
    5 请返回命令生成的【FILENAME】文件,文件生成的路径是由命名中out 【FILEPATH】【FILENAME】参数所指定的