浅谈大数据量查询

        前两天开会,提到了大数据量查询较慢的问题。其实这个问题我们不止一次遇到了,今天简单谈谈对这个问题的一些小看法。

        首先,客户最长能忍受多长时间的等待呢?

        当然,不让用户等待是最好的,或者说不让用户觉得实在等待!最简单的比如loading图片、进度条等。其实,Ajax的异步通信也是为了不让用户感觉到在等待!

        那么如果非得说要让客户等待系统反应,这个时间到底是多少呢?以我个人观点,普通需求不可以超过3秒钟。假如你点击了一下查询按钮,前两秒钟没反应,客户可能会开始思考这是怎么回事,如果到第三秒钟还没出结果,客户会判定出问题了!当然,对于程序特殊需求如导入导出等除外。


        还有就是,遇到这样的问题,我们应该怎么办?

        大部分人的第一反应可定时程序代码是不是有问题。如果真的是代码逻辑有问题,这倒是好解决的了。但是事实往往不是这样的。

        事实上,出现这样的问题70%在sql语句上,20%出现在表设计上。对于出现在sql语句上的问题,一些常见的如表连接的使用、in关键词的使用等,大家可以一一检查。

        而如果真的是在表设计上出了问题,我们改怎么办?推倒重来?这是不可想象的一件事!因为这样的问题,大多是在软件后期才发现的。这就意味着大部分工作都完成了,才发现设计上导致出现这样的问题!

        很不幸,我们在之前的系统上就是设计上考虑不周,出现了查询较慢的问题。相对于这次会议上说的sql语句的问题,我们那次真的是一次恐怖的遭遇啊!


        简单的说,我们的问题是这样:构成视图的表太多!我记得构成这个视图的表在20张以上,而数据量大约在3万条。这样的情况,每次查询大概2-3秒的样子,算是勉强可以接受的。

        其实在后来,我们讨论的时候也说到过这个问题,当初的设计确实是有问题的!当初为了灵活性使用了大量中间表,其实没必要所有的地方都使用中间表,那样会减少很多表关系!


        我们现在的数据量是几万条,其实根本不能算是大数据量!sql server是完全可以轻松处理几十万条乃至百万条数据的。所以,出现几万条就很慢的时候,一定是有些地方没设计好。

        最后还想说,大数据量的测试,绝对不能等到最后测试。而是应该在设计阶段就要考虑,编码后马上测试,以便尽早发现尽早解决!

评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值