SQL Server 2012 链接服务器到 MySQL 慢速选择查询

Posted

技术标签:

【中文标题】SQL Server 2012 链接服务器到 MySQL 慢速选择查询【英文标题】:SQL Server 2012 Linked Server to MySQL Slow Select Query 【发布时间】:2014-04-16 16:58:28 【问题描述】:

我正在运行 SQL Server 2012,并通过最新的 mysql ODBC 驱动程序设置了与 Linux MySQL 实例的链接服务器连接。我对返回一个相当简单的“选择”查询的结果所花费的时间有点失望。

select * from OPENQUERY(LinkedServer, 'select * from mysqltable')

该表大约有 150,000 行,大约需要 70 秒才能将结果返回到 SSMS。相反,如果我通过 MySQL 客户端应用程序(在本例中为 Navicat Essentials,与 SQL Server 在同一台计算机上)查询表,则查询将在大约 1 秒内执行。

我知道 Linked Servers 和 ODBC 会更慢,但我对这种性能下降感到惊讶,尤其是在使用如此直接的查询时。

我已经尝试了 Unicode 和 ANSI 驱动程序,并且性能相似。 MySQL DB 是 UTF-8 CharSET 和 Coalition,表是 InnoDB。我也尝试过明确选择列而不是 *。再次没有区别。

以前有没有人遇到过这种情况并获得过任何加快性能的提示,或者这很正常吗?

提前致谢。

【问题讨论】:

您使用的 MySQL 客户端应用程序是否只发回前几行,然后在您滚动浏览结果集时检索其他行?我知道 Toad 在连接到 Oracle 时会这样做,并且有时会让您认为如果所有行一起返回,查询的运行速度会比它快得多。 这是一个有趣的建议。我会检查日志以获取其他查询。 我们使用定期更新的临时表(每 3 小时一次)。根据您要求数据的可用性和最新程度,这可能是一个可行的解决方案。 【参考方案1】:

在链接服务器中 我认为没有显着改善的可能性 但是你可以通过SSIS试试 并使用批量插入。

【讨论】:

以上是关于SQL Server 2012 链接服务器到 MySQL 慢速选择查询的主要内容,如果未能解决你的问题,请参考以下文章

Sql server 2012 企业中文版安装图文教程(附下载链接)

无法从链接的 SQL Server 查询视图

sql server 2008 链接 ORACLE 问题

如何将Codeigniter与MSSQL(SQL Server)连接?

使用 DAO 和 Sql Server 链接表的事务

Microsoft SQL Server 2008 和Microsof Server 2008 有啥区别.?