如果用Excel查询,mysqlselectsearch需要太长的时间来显示

我在MySQL上很新,所以请耐心等待…

我有一个查询MySQL数据库的Excel表…这里是查询的一部分(从VBAmacros运行):

... sql_query = "SELECT SQL_CACHE g.Id, g.Client, g.text_parsing FROM `global`.`tbl_cots` AS g WHERE g.Client LIKE '" & strClient & "%' GROUP BY g.Id;" With rsPubs .ActiveConnection = oConn .Open sql_query ' Copy the records into cell A5 Range("A5").CopyFromRecordset rsPubs ... 

数据库有130万行。

查询某个客户端(find14000行)需要10秒左右的时间来显示…

如果匹配的logging是小数字,则显示更快(<2秒)

那么我认为返回的logging数越多,显示的时间就越长。

但是,如果我使用MySQL查询浏览器运行相同的查询(返回14000行),则会立即显示14000条logging。

任何想法如何使VBA查询运行速度一样快,或者这是使用Excel / VBA直接查询MySQL数据库的限制之一?

我很困惑,因为插入通过VBA(从Excel中)我设法在2秒内插入> 10000条logging….我不明白为什么SELECT需要这么多时间运行…

ps字段“客户端”被索引

提前致谢

更新我正在通过IP访问数据库(模拟从“外部/远程”访问数据库)。 将DNS更改为本地主机,并几乎立即获取结果。

所以…有没有一种方法来加快数据库远程访问时的select?

查询某个客户端(find14000行)需要10秒左右的时间来显示…

如果匹配的logging是小数字,则显示更快(<2秒)

无论程序/工具发送请求,查询都会在数据库中同时运行。 但是,大多数DB Query应用程序(如Toad或SQLDeveloper)只会返回第一个xxx行数。 您的VBA代码将要求整个数据集执行更新,因此它需要更短的时间和较小的结果集。

VBA在速度方面一般很糟糕(更不用说CPU HOG了),所以我build议你尽量在SQL本身中完成所有繁重的数据处理工作,并尝试返回尽可能less的行数。 我的意思是,如果你要返回一堆行来优化,然后通过一个数据透视表或类似的东西来运行它们来聚合它们,那么你最好在数据库上进行聚合,并返回最小的数据集。