您好,我正在尝试使用 mysql workbench 将 mssql 数据库迁移到 mysql 数据库
这里的问题是当我迁移数据时,mysql工作台在最后一步卡住了 这是数据批量传输,我在网上搜索了一些答案,说如果您在 64 位 win 7 上使用 mysql workbench,此操作将始终卡住,这是正确的吗? 我应该安装 win 32 吗? (当我想迁移 mssql 数据库中的所有内容时,就会发生这种情况)。
第二个问题是,我设法迁移了几个表,但没有迁移任何过程或触发器,最重要的是,mssql 中的一个简单查询需要 0.2 秒,在 mysql 上的同一个表上需要 20 秒我知道问题出在索引但是当我将表索引到某个值时 如果我确实在该列上选择了 where 列,则查询工作正常,但在索引列上不使用 where 进行选择仍然非常非常慢。
示例:
从用户中选择*;
这在 mssql 1 秒内
在 mysql 中 20 秒
对 user_type 建立索引后
从 user_type = 2 的用户中选择 *;
这需要 mssql 0.7 秒
在 mysql 中 0.5 秒
但是当我回来使用时
从用户中选择*;
这需要 mssql 0.9 秒
在 mysql 中 18 秒
这里有什么想法吗?
谢谢。
最佳答案
经过多次尝试,我找到了解决方案:
当数据从mssql迁移到mysql时,mysql假设你想使用InnoDB作为默认引擎,当你进行迁移时,你将丢失索引、例程和过程,因此当你在InnoDB上运行数据时在您重新创建新的索引、例程和过程之前,它会非常慢。
但是当您指定要使用 MyISAM 作为默认引擎时,选择查询将非常快,而无需执行上述操作,并且如果执行了上述操作,查询将会更快。
但这适用于读取行,因为 MyISAM 非常适合读取行,但对于写入来说,InnoDB 将成为老大,当然,如果需要读/写,InnoDB 也将成为老大,但在重新创建上述内容之后。 p>
所以对于我的情况,我只是在每个表创建语句之后添加了 ENGINE=MyISAM,当我执行任何查询时,即使我正在获取 200k 行,我也花了将近 2 秒才能得到结果。
关于mysql - 将数据从mssql迁移到mysql的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20377569/