mysql - 将数据从mssql迁移到mysql的问题

标签 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 秒我知道问题出在索引但是当我将表索引到某个值时 如果我确实在该列上选择了 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/

相关文章:

php - sql query cannot read from another table (mysql 表关系)

database - 如何在 postgres 中根据 IF 条件删除表?

sql - 我想显示所有具有指定列名的表

sql - 如何为多语言列创建全文索引?

javascript - 无法从注册表中将数据从 PHP 插入到 MYSQL 服务器

php - 我怎么知道我的 mysql_query 更新是否实际上没有更新任何东西?

database - B+树,选择顺序

sql - Oracle 10g - 链接两个具有不同用户权限的 View

java - JDBC getUpdateCount 返回 0,但在 SQL Server 中更新了 1 行

php - 登录成功后想返回用户roleid