2025-04
12

使用内部数据就会卡?

By xrspook @ 8:35:34 归类于: 烂日记

昨天说到一个很简单的SQL语句引用的数据库就只有一个字段两行记录,居然需要24秒才能得出结果。这让我觉得非常不可思议。首先可以肯定的是数据量非常少,为什么会出现这种问题呢?那只能是连接方面是不是出了什么故障,也不能说,那是失效的,因为的确还能查询得到想要查询的东西。在我测试的那个宏里面。我引用了两个文件,一个是外部文件,一个是内部文件。外部文件是含有比较多的数据,而内部文件,也就是我一开始说的那个只有两条数据。我感觉如果我的SQL再厉害一些,我对VBA再熟悉一些的话,那个内部文件可能我就不需要引用了,我直接就在VBA里创建一个数据库,然后把两条数据给写进去,用完以后就删掉,但显然现在我还没有很大的把握,一定能完美地做这件事情。把我某个文件里面的数据转化为数据库的数据我又烂熟,所以我采取了现在使用的这种方式。

ADO+SQL的这种方式,因为我们是跨表引用,所以意味着数据肯定来源于多个文件。他们有可能是同一个工作簿的不同工作表,也有可能是在不同的工作簿里。对我来说,只要是在一个工作簿里,那么起码一开始设定指向的时候就得有一个数据源。最经典的方式引用的那个数据源在使用数据的时候,在from后面不需要进行进一步的引用,其它的就得麻烦一些。我的第一个反应是,是不是引用数据的那个语句出现了变动呢?比如说现在我用的是Excel12。在数据源引用方面,我又折腾了一番,发现好像还是那样,没什么进展。会拖慢查询的那个数据源,我甚至把它放到了主数据源里,结果发现还是很慢,于是这就排除了是数据源引用语句变动导致缓慢。

所以这到底是什么原因造成的呢?因为我有很多个跨表引用的查询。有些查询是内部数据外部数据都有,有些只有外部数据,经过测试后我发现好像只有引用了内部数据的查询才会变慢。

为了证明我这个想法,星期三的晚上我编造了一些数据做测试。主要原理就是研究是不是数据源的关系导致这种变慢。一开始我的设计就是一个排列组合的方式,因为我默认的数据引用是要跨表的,所以我把数据源根据内内、内外、外外和外内这4种方式测试,实际上内内和外外是一回事,也就不需要进行两个引用了,所以我又把那两个东西拿了出来,同样进行测试。结果让人有点吃惊,凡是有内部数据参与的查询都会变慢。我测试的数据就只有一个字段几条记录,内内和内外需要12秒,外外需要0.1秒,外内需要24秒。这就能解释为什么我的那些变慢的查询起码都要24秒才能出结果。因为我永远把内部数据放在后面。究其原因是因为我设计那些查询的时候,我后来才想到要在那个查询文件里面搭一个加脚手架,把一些基础的东西加上去,在这种情况下我加得最多的是日期表。

关于这个测试的来龙去脉以及最终的结果,我在ExcelHome里面做了一个详细的帖子,在这里就不再具体阐述了。

折腾了这么一番以后,我发现这个锅还真不是我整出来的。造锅的是微软,不知道更新出了什么状况导致了。

Excel用多了,不知不觉我也居然能挑出微软的毛病。

2025-04
11

查询突然变慢

By xrspook @ 8:14:07 归类于: 烂日记

周三的下午跟往常一样,我点一下自己写的ADO+SQL+VBA的跨表查询文件,结果发现之前一秒就能出结果的东西等了好久,鼠标在那里转圈,我都甚至怀疑是Excel不知道因为什么原因卡死了,但我又有理由相信这不是卡死,因为当VBA要运行很长时间的时候,就会出现那种假死的状态。以前我遇到过这种情况,当我要查询一整年的平均库存的时候,就会这样,如果只是查询一个月的,没有问题。之所以一整年会出状况,是因为需要处理的数据的确有点多,如果我用的不是Excel的VBA的SQL,如果我要做的那个平均库存是在数据库里,用正儿八经规范标准的SQL做,我感觉不需要那么长时间。要长时间运行,无可避免会出现假死状态。周三下午,我就经历了一次,但我觉得那个查询不应该会假死。那个查询文件我用了接近两年,一直以来都没什么问题,因为数据不多,很简单,所以正常情况下,一秒之内出结果。其它查询可能需要的时间长一点,因为涉及的数据量比较大,但是这一次让我卡死的那个,一直以来,当我测试成功通过以后,就没有卡死过。

为什么会这样呢?我把自己写的所有查询文件全部都点了一遍。我觉得既然最简单的那个都要卡24秒,那些之前需要更长运行时间,会让人疯掉。测试结果让我有点意外。我猜想会更疯狂的那些居然没事,跟以前一样,运行时间没什么区别,但有些我感觉没有难度的东西,反倒卡住了。最卡的那个卡了97秒,实际上那个查询平时只需要0.5秒。

遇到这种情况,首先我不觉得是因为我的查询文件出了状况,因为这几天它没改动过,除非有人动了我的电脑,但这个几率太低。我觉得出状况最大的可能性是那个源文件的结构发生了某些变化,因为我引用的是Excel文件。用的那个范围是一个超级表,而如果在那个超级表以外的某个地方出现了一些奇怪的数据,比如说在纯日期的列里面出现了文本,那么就会导致在SQL转化数据的过程之中出现一些意想不到的事情。为了避免这种事情,我把源数据的那些空白行和列全部都删除处理。这就保证了我的原始数据是符合规定的,和以前的格式是一致的。接下来我觉得这会不会是更新的问题,所以我对windows系统以及Microsoft 365都进行了手动的更新。这两个东西的确都是需要安装更新的。更新完成了以后,问题依旧。

接下来我有两个选择,一个是就这样等死,反正现在的情况也不是出不了查询结果,只是用时很长而已。万一这真的是微软升级的bug,说不定哪一天他们就会解决掉,但也说不准他们永远都不解决这个我认为是bug的问题。第二个选择是我主动出击,逐个测试VBA查询里的语句。找出那条让我运行时间很长的语句,然后判定到底是什么原因。

那个理论上一秒就应该结束的查询,实际上是Excel工作表里面汇集了多个汇总查询。我只是把结果都在一个页面展示而已,所以首先,我要找出导致最终结果很慢的是哪个查询。这是一个反推的过程。让我有点意外的是,那些涉及很多数据的查询居然都没有问题,一个我觉得根本不会出问题的问东西里居然出问题了。出问题的那个查询实际上只涉及了一个字段两条数据。这简直让我震惊了,怎么居然这样呢?

这个问题是我之前没有遇到过的,但从发现这个奇葩之后,我觉得自己有点跟那杠上了。

2023-03
7

挂号技巧

By xrspook @ 9:14:34 归类于: 烂日记

不知不觉已经手术一个月,虽然这个月相对于其它月来说短了几天,因为2月只有28天,但是就医嘱来说,术后一个月,那么我也就只能算物理上的一个月。因为我是星期二做的手术,所以我只能挂教授星期一的号。挂教授号这种东西之前我从来没有做过。一直我都不迷信教授副教授什么的,通常都是随便挂一个专科号。可能当年我在省中医院挂的那个主治医生现在已经升为副教授甚至教授了,这个不得而知,反正已经过去很多年了。正常来说理论上应该这样,但实际上如何,估计还是得看人吧。中山医院的教授号据说很难挂。普通教授的号挂号费30块钱,同一个教授也有特诊的号,300块钱。我想都没想过要挂300块钱的号。挂教授的号看准那个时间,然后蹲点,我感觉比当年抢小米手机容易一些。号会提前一周放出,所以如果下星期一要去看病,这个星期一早上8点就得开始抢号。这个星期一我要看病,所以上个星期一8点我是调了闹钟去抢号的。一开始的时候也不知道是单位的网速问题,还是人人都要在那个时间抢中山一的号,所以卡住了。接着我直接关掉了单位的WiFi,用自己的流量,发现还是卡,所以得出结论,8点开始放号,会发生卡顿的。卡顿的情况是点进去某个教授,但是却弹不出挂号的时间段,或者点了挂号的时间段,提交要交钱的时候转半天都转不出交钱的界面。但总算重复一两回以后就可以了,相比之下抢招行每月一次的3元早餐难多了!我选的那个教授也不是非常热门的人,所以号还是比较充足的,我个人感觉我完成挂号以后,我那个时间段我是第3个,但结果挂完号以后给我发短信告诉我,居然我是第2个。这就让我有点惊讶了,可能排我之前的某个人没有交费吧。又或者那个就是我自己,因为有一次无论如何弹不出交费的界面。我那个教授的号相对好挂,但同样是周一开诊的另外一个女教授的号就非常抢手。我挂完号再去看的时候,她上午的号已经没有了,下午的也只剩下3个.而我挂的那个教授的号,上午下午都还剩下很多。另外一个妇科主任、他们所有教授的大领导的教授的号也都还剩不少。所以得出结论,只要蹲点抢,还是可以抢到的。挂号的时候APP会告诉你抢不到教授的号,抢教授团队的号也一样的。既然我能抢到教授的号,我就不需要抢教授团队的号了。因为我真的很害怕遇到像我的管床医生那样的学生。

当我站在那里等前面的人结束她们的事,然后把检验报告给教授看的时候,前面的大妈说教授的号很难抢,她们只好挂300块钱的号。教授的意思是30块钱300块钱都是有的,但如果真挂不到30的话,也就只能挂300。如果她们上点心抢一抢,30块钱的号还是可以抢到的。比如周一的下午到3点多的时候,教授下午30块钱的号还剩下几个,所以在那个时候挂号,她们依然能抢到30块钱的号。之所以难抢,大概是她们并没有很好地掌握抢号的时机,习惯了去看病那天才挂号。对年轻人来说,蹲点秒杀东西是很常的事情,但是对那些中年大妈来说,要她们干这种事的确挺难。如果她们稍微悟性高一点的话,我那时补了一句,你们现在就可以抢到下周的号,而她们又能领悟过来,原来的确可以这么干,我这一句话就可以帮她们省下270块钱,这都可以去照一个阴超了。

多年以前,挂省中医院主治的号才3块钱,现在的号全部都10块钱起了。以前30块钱去抓一般的调经中药,起码可以抓到3副以上。物价是飞上去的,但工资不是。

2022-09
10

吐槽单位网速

By xrspook @ 18:07:51 归类于: 烂日记

三个星期之后终于回家,在单位过了两个周末,感觉时间过得很快,我没干过什么,然后就那么没了。那两个周末在宿舍的时候我通常在煲电视,在煲《风声》,因为那部电视剧我总是断断续续的看,所以这次就一次性连续看下去。在家里,我爸实际上已经把这部电视剧看了两遍,分别在两个不同的电视台,但每一次我都是回家的时候看一看,上班的时候完全没有理会过,所以都是断断续续的。后来我找到了麦家的同名小说,发现电视剧的内容比小说多非常多。虽然主线还是那几个人,但实际上细节发展完全不一样。《风声》这部电视剧是腾讯独播的,我一开始看的时候只有前两集免费,于是我就找了一个可以免费看的网站,唯一要做的就是把腾讯的播放链接复制粘贴过去。单位的网速是很神奇的存在,白天的时候看线路4一点问题都没有,但是到晚上就会直接无法播放,于是就得转到其他线路,但其他线路也会播着播着就卡顿了。所以幸好我没有长期看电视的习惯,如果我是那个下班就蹲在宿舍里看电视的人,估计我肯定会抓狂死。

不仅仅是看电视会发生这种事。进行动感单车的时候,某些晚上也会出现卡顿。看电视卡顿,可能刷新一下就好了,又或者上个厕所等一等,但动感单车课程之中卡顿,对我这种得分狂人来说,那根本就停不下来,因为你不知道什么时候会恢复,所以你只能按照那个目标踏频,一直不断持续下去,有可能是5秒,有可能是10秒,也有可能是30秒以上,于是这样就非常的考验人,本来那一段练习就只是30秒,顶多45秒,但因为这种说不准什么来时候来的卡顿,会导致那个练习无形之中变成了持续一分钟甚至两分钟以上。如果我设定的那个强度,也就是我使用的那个阻力已经是我的极限,无论任何踏频,我都无法坚持那么长时间,只要我松懈那么一下,突然,你会发现网络又恢复了,你没办法马上回到那个目标踏频里,于是最后的得分就不是100了,甚至因为得分过低,连连击都没有了。对我这种分分分就是我的命根的人来说,这简直无法接受。因为总体的网速不好,所以即便换了一个可能信号好一点的WiFi,结果还是一样。即便动感单车的课程我选择的已经是最差的分辨率,依然有可能卡死在某个地方。视频卡住了,还可以不看,动感单车课程卡住了,就会让你觉得心有不甘,毕竟已经开始了,甚至已经进行了大半了,停下来退出去就意味着一无所有。不过幸好暂时我遇到的只是卡顿,万一像某些非常偶然的晚上突然停电的话,我更加是一点办法都没用,但幸好在动感单车课程之中突然停电这种事暂时还没发生过,但只要我进行动感单车的课程频率足够高,单位又的确会有突然跳闸停电这种事情,总有一天我会遇上。到那个时候,只能说是欲哭无泪了,一点办法都没有。不知道野小兽能不能判断客户端这边是因为突然停电或者突然断网而无法继续课程,下次再次进入的时候可以有恢复的按钮,但估计不会有这种选项。

单位的破网速由来已久的啦~

2022-07
17

局域网内远程桌面中断

By xrspook @ 11:47:20 归类于: 烂日记

上周的某天晚上,我跟平时一样在宿舍用笔记本电脑远程到办公室的台式电脑上。虽然是不同的网段,但我们的内网设置了穿透,所以即便跨了IP段还是可以连上,但那天不知道为什么,过一段时间就会很卡,看网页的时候可能浏览器会卡死,做其它事情的时候可能也会出现各种卡顿的状况。因为在等待着单位的业务结束,我就拿着个手机在那里刷买买买,突然显示器弹出一个连接断开的界面。我没有多想,这种情况通常在网络不好又或者有人和我抢远程连接的时候就会发生这种事。以前,当我们的系统还没部署在VPN的时候,每次回家我都需要连接VPN,然后连接单位的服务器,然后在那台电脑上导出下载我需要的资料。因为可能不只是我一个人在用,当我连上那台服务器的时候,有可能别人正在用,所以就会出现我把他们的远程抢了,然后过上几秒他们又会反抢回来。所以连接突然中断,我并不意外。那个时候我们也就只能在微信上沟通,问一下对方是不是在用,然后协调出一个大家都可接受的方案。

但这一周的远程连接断掉又跟之前不太一样。因为我连接的是我自己的电脑,我没有告诉过其他人账号密码,而且当我重新连接的时候。发现是可以做到的,但是却一直停留在蓝屏“请稍后”的界面。如果电脑完全卡死了或自动关机了,我应该远程连接根本无法访问,现在是连上了,但停留在请稍后的蓝屏界面。我的判断是电脑不知道为什么卡住了,但可以肯定的是没有卡死。试了很多次都无法访问。我就试了一下连接服务器,连接我的电脑要好久,但是连接服务器那是秒连的,而且连上去以后所有东西都很顺滑,没有卡顿。如果是因为内网塞车导致我远程连接断掉,为什么连接服务器就没有这种问题呢?当我能快速连接单位服务器以后,我又重新连了一下自己的电脑,依然不行。在这种情况下,我也就只能不连接那台电脑了,直接用我的笔记本电脑处理单位的业务,完了以后赶紧去办公室看一下到底什么情况。最坏的打算是办公室的电脑卡死动不了,但实际上那台电脑一点问题都没有,还停留在我卡机之前的那个界面,我个人感觉跟平时没什么不一样。所以这到底是什么原因导致了局域网的远程连接突然挂掉呢?或许下一次我还可以试一下在宿舍远程连接到服务器,然后在服务器上远程连接到我办公室的电脑。因为据说的确就会有这种情况直接连接不行,但是通过一个间接的方式不知道为什么又可以了,而这种不知道为什么可以还非常有可能在重启以后又可以直接连接了。

网络塞车这种事我已经习以为常,尤其是当单位的人越来越多以后。不仅仅是我们的人,外协单位的人也多,同时保安也不少。外网不通畅我可以理解,毕竟他们还是要打游戏,还是要买买买,还是要各种下载或者看视频刷抖音的。所以买买买塞塞车,我一点都不意外,但问题是为什么只是在局域网连接内部的电脑也出现这种卡呢。

单位的网络永远滞后于人员的扩充发展,我们是时候找个专职的网管了!

© 2004 - 2026 我的天 | Theme by xrspook | Power by WordPress