将数据从mssql迁移到mysql问题

时间:2013-12-04 14:09:55

标签: mysql database sql-server-2008 mysql-workbench

您好我正在尝试使用mysql workbench

将mssql数据库迁移到mysql数据库

这里的问题是当我迁移数据时,mysql工作台在最后一步冻结了 这是数据批量传输我在网上搜索了一些答案说如果你在64位win 7上使用mysql workbench这个操作总会被冻结,这是正确的吗? 我应该安装win 32吗? (当我想迁移mssql数据库中的所有东西时会发生这种情况)。

第二个问题是,我管理好了迁移几个表,但没有迁移任何过程或触发器,最重要的是mssql中的简单查询需要0.2秒才能在mysql上的同一个表上进行20秒我知道问题出在索引,但当我索引表确定 如果我确实选择了该列的哪个位置,那么查询工作正常,除了选择没有索引列的位置仍然非常慢。

示例:

从用户中选择*;

这在mssql 1秒

在mysql中20秒

在user_type

上建立索引之后

从user_type = 2;

的用户中选择*

这在mssql 0.7秒

在mysql 0.5秒

但是当我回来使用时

从用户中选择*;

这在mssql 0.9秒

在mysql 18秒

这里的任何想法?

感谢。

1 个答案:

答案 0 :(得分:2)

因此在经过多次托盘后我找到了解决方案:

当数据从mssql迁移到mysql时,mysql假设你想使用InnoDB作为默认引擎,当你进行迁移时,你会丢失索引,例程和程序,所以当你在InnoDB上运行数据时在重新创建新索引,例程和过程之前,它会非常缓慢。

但是当您指定要将MyISAM用作默认引擎时,如果不执行上述操作,则选择查询将非常快,如果执行上述操作,则会使查询更快。

但是这项工作用于读取行,因为MyISAM非常适合读取行,但是对于写入InnoDB将是老板,当然如果需要读/写,InnoDB也将成为老板但是在重新创建上面之后。

所以对于我的情况我刚刚在每个表创建语句后添加了ENGINE = MyISAM,当我进行任何查询时,即使我获取200k行,我花了差不多2秒才得到结果。