我希望如果有人能帮我解决这个问题,我已经将我的MS access数据库拆分到mysql服务器上,并通过odbc驱动程序连接,并直接连接到我的ms access表。当我在本地网络上打开我的ms访问前端时,它的速度很好,但是当我通过互联网连接时,速度太慢了,它需要2-3秒来打开和显示查询。我的网速非常好,我很惊讶我可以打开远程桌面并从它以更快的速度打开ms访问。在odbc的跟踪是关闭的,请让我知道有和编码需要写在vba而不是直接连接。请指点一下,我不是专家。提前谢谢你。
发布于 2020-08-05 07:13:14
那么,与您当地的办公室局域网相比,internet连接的速度是多少?
如今,即使是最便宜的办公网络也是1000T。他们曾经是100T,在此之前他们是基础10T。
所以,这是非常简单的三年级数学。
假设你的互联网是15M比特。让我们假设它是50Mbts。但是话说回来,这就是你的下载速度!当您访问工作服务器时,该端会受到其上载速度的限制。即使有一个好的计划,这种加载速度也是有限的。
所以,让我们来做一些三年级的数学。假设你的iternet连接是50mbits (这可能是单向的--但我认为你的上传速度非常好。
所以,1000/ 50 = 20!
哇!高达20倍的速度!
好的,那么现在我们在问:为什么20倍慢的连接速度会慢20倍呢?就像荷马·辛普森说的那样?啊!
所以,4秒的延迟现在是80秒!但话又说回来,我真的怀疑你是否有接近50Mbts连接的东西-当你访问服务器时,你会受到没有下载速度的限制,因为你是从那个服务器上下载的。因此,现在您限制了上载速度。比方说,15兆字节。好了,让我们再做一些三年级的数学题:
1000 / 15 = 66!
好的,现在我们慢了66倍。5秒的延迟现在将是5x66= 333秒(或五分半钟!)。
所以:不,你的互联网连接速度可能很快--但你把它的速度和什么进行了比较?因为如果你把它和你的1000吨的廉价办公网络进行比较?好吧,那么你甚至没有接近,而且按照所有的标准,你的互联网连接根本就不快!
我的意思是,你可以走得很快,但开车是一个非常不同的过程。
当然,您可以做的一件事是确保access表单不会提取大量数据。
那么,如果您将一个表单链接到一个有500,000行的表呢?
好吧,如果你只是启动表单呢?然后,它将开始提取数据。毕竟,它只做你告诉Access去做的事情。
但是,如果您这样做:
dim strInvoiceNum = InputBox("What invoice number")docmd.OpenForm "frmInvoices",,,"InvoiceNum =“& strInvoiceNum
现在,将同一个表单绑定到包含500,000行的链接表?只有一行将沿网络管道下行。因此,好的性能主要是好的设计的问题。如果您的愿望是告诉Access将大量数据放入表单中?然后你会非常注意到速度变慢了。但你以前从来没有注意到这一点,因为与办公室局域网的50倍或更快的连接速度相比,你不必担心非常有限的互联网连接。
因此,因为您以前拥有如此好的速度,所以您不必花费时间来担心您将多少数据放入表单中,因此您并不关心。
现在,在上面,我使用了inputbox,但在一个典型的access应用程序中,您将构建良好的UI和良好的表单来提示用户要处理的内容。
这与谷歌的工作方式并没有什么不同。你不需要把整个互联网下载到浏览器中,然后按下ctrl-f来搜索一个包含大量数据的巨大页面。你要做的就是提示搜索,显示一些结果,然后让用户选择结果。
然后使用"where“子句启动表单。那么,即使是100%直接绑定到大表的表单也是如此?如果你用where子句打开它呢?它只将1条记录或多条记录拉到网络管道中。
因此,您可以这样说,构建一个搜索表单:

我输入了smi。因此,在文本框的更新后事件中,我执行以下操作:
me.RecordSource = "select * from tblCustomers where LastName like '“& ttextbox & "*'”
当用户点击一个结果时呢?我打开一个带有where子句的reocrd:
例如:
Docmd.OpenForm "frmBooking",,,"ID = " & me!id那么,即使我搜索的表有100,000甚至一百万行?好的,拉取30条记录,或者点击一行?好吧,上面的代码将表单打开到一行(这是即使表单直接绑定到巨大的表-只拉出一行)。
事实上,无论是会计软件包、google,还是您曾经使用过的任何软件?表单不会拉下整个表,然后让您使用ctrl-f来搜索您无缘无故拉下的巨大数据集。
即使使用Access作为后端文件共享,典型办公室网络上的5个用户也应该会产生极高的性能。但是,一旦您在Access和后端之间采用VPN或internet连接?那么,后端不能是文件accDB (访问文件)。原因是文件共享网络对于网速来说往往太慢。
但是,如果您对Access和基于服务器的后端采用上述性能提示?那么,是的,您可以获得相当不错的性能-但前提是您作为开发人员花一点时间限制您提取到此类表单中的数据。
不管怎样?基于简单的三年级数学?与在access和后端数据库之间引入internet之前相比,您根本没有快速连接。
https://stackoverflow.com/questions/63253402
复制相似问题