做动态网站时,如果一条查询语句约束条件很多的话,是不是可以通过减少约束条件,先拉出一笔数据然后通过java来处理,这样做速度效率会快一点?(特别是在大数据量和需要模糊查询的时候)
关于java和数据库
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
17条回答 默认 最新
- shl270070 2009-04-20 10:26关注
那要看你的数据有多少了,楼主的方法可行,并且有的公司就在用。
但你是否考虑过这种情况,随着时间增长,数据量会很大,如果客户检索的数据量足够大,比如说一次检索1M的数据量,那么就把这1M的数据都发送到客户端么?那么客户非得等到疯掉不可!或是先存到服务器缓存,再做分页?那么客户并发多的时候,比如说几千人并发访问,服务器就挂了!增加服务器硬件设备?老板不舍得花钱!请问这些时候怎么办?
其次,从效率角度看,你能保证你用Java写的东东处理数据比数据库效率高么?如果没有,为什么第二步筛选不由数据库来完成?
还有,数据库中的数据是否是及时有效的?无用的数据是否被及时处理掉?画面上的检索条件是不是可以删减掉一些?数据库中的数据是否是杂乱无章的?入库时候能否按照一定顺序以方便查找?有没有现成的东东来参照?有的网站,比如说中华英才网,在选取行业类别的时候提示不能选择超过五个类别。
你要注意一点:只有一个客户端访问效率高并不代多个客户端访问效率也高!
更多的时候我们是这样考虑的。用户检索条件总有个特征之分,多少之分,按照你说的检索条件很多,那么你的画面上检索条件应该是死的,比如说下拉选框选个省市什么的,而不是让客户自己输入一些内容检索。罗列一下,比如说你画面上死的检索条件总的组合有100组,也就是说所有的检索条件随便组合只有100种,那么就好办了,将这100个检索结果放到缓存中,N个客户共用缓存中的这些表,当有相关更新时,触发更新缓存中的表(你应该知道缓存读写比硬盘读写快N倍)。如果有1000种组合呢?或是10000种?人类是善于观察和总结的,你会发现,10000中,有100个用到的频率很高,也许超过80%,好的,那么还是这100个放到缓存,其余的去数据库检索。再看前面的情况,一个客户检索1M的数据量怎么办?100个1M放在缓存中么?真正做的时候你应该尽量保证一个客户数据量不要超过几K,如果非要1M不可,以上均徒劳,写带分页的SQL去查询,千万不要将结果都放在缓存中再做分页。
最后只说一个:打开百度,输入一个字,检索,百度会提示检索出500万条,用时XXX,如果这500万条都发到客户端会用多长时间?一上午??那么你认为百度一次将这些数据为你在缓存中准备好了么?还是你点第几页的就去检索那个页的?或是别的??虽然百度不用普通的商业数据库,但是百度也得检索数据,大同小异而已。
先到此吧,写代码去了,呵呵。本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 Arduino红外遥控代码有问题
- ¥15 数值计算离散正交多项式
- ¥30 数值计算均差系数编程
- ¥15 redis-full-check比较 两个集群的数据出错
- ¥15 Matlab编程问题
- ¥15 训练的多模态特征融合模型准确度很低怎么办
- ¥15 kylin启动报错log4j类冲突
- ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
- ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序
- ¥15 onvif+openssl,vs2022编译openssl64