如果用Excel查询,mysql select search显示时间太长

标签 mysql excel

我是 MySQL 的新手,所以请多多包涵...

我有一个查询 MySQL 数据库的 excel 表...这是查询的一部分(从 VBA 宏运行):

...
    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 万行。

当查询某个客户端(找到 14000 行)需要大约 10 秒才能显示...

如果匹配的记录数较少,则显示较快(<2秒)

我认为,返回的记录数越多,显示所需的时间就越长。

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

有什么想法可以让 VBA 查询运行得同样快,或者这是使用 Excel/VBA 直接查询 MySQL 数据库的局限之一吗?

我很困惑,因为通过 VBA 插入(从 excel)我设法在 2 秒内插入 >10000 条记录....我不明白为什么 SELECT 需要这么长的时间来运行...

附注字段“客户端”已编入索引

提前致谢

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

那么...有没有办法在远程访问数据库时加快 SELECT 的速度?

最佳答案

When querying a certain client (14000 rows found) takes some 10 seconds to display...

If matching records is a small number, it displays faster (<2 seconds)

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

VBA 在速度方面通常很糟糕(更不用说 CPU HOG),所以我建议您尝试在 SQL 本身中进行所有繁重的数字运算,并尝试返回尽可能少的行。我的意思是,如果您要将一堆行返回到 excel,然后通过数据透视表等运行它们以聚合它们,您最好在数据库中进行聚合并返回尽可能小的数据集。

关于如果用Excel查询,mysql select search显示时间太长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6284123/

相关文章:

python - MySQLClient 安装错误 : "raise Exception("Wrong MySQL configuration: maybe https://bugs. mysql.com/bug.php?id"

mysql - 加快mysql查询速度

vba - 如何动态更新VBA形式的标签标题?

excel - 在 if 语句(函数)中使用单元格的颜色作为条件

vba - 当我添加具有相同代码的新 Sub 时 Excel 宏不起作用

php - 如何分析项目通过系统的路径

php - 连接多个表,特定列返回 0? PHP/MySQL

mysql - 为什么这个子查询要进行表扫描?

c# - 保存 OpenXML 文档时操作共享字符串表

excel - 我想要 50 个 5 列 10 行的随机数组的数据,具有唯一且没有重复值。这里为什么显示重复值?