gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 00:55:40 25 4
gpt4 key购买 nike

我是 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com