zyc850809 2009-04-20 09:14
浏览 292
已采纳

关于java和数据库

做动态网站时,如果一条查询语句约束条件很多的话,是不是可以通过减少约束条件,先拉出一笔数据然后通过java来处理,这样做速度效率会快一点?(特别是在大数据量和需要模糊查询的时候)
  • 写回答

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万条都发到客户端会用多长时间?一上午??那么你认为百度一次将这些数据为你在缓存中准备好了么?还是你点第几页的就去检索那个页的?或是别的??虽然百度不用普通的商业数据库,但是百度也得检索数据,大同小异而已。
    先到此吧,写代码去了,呵呵。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(16条)

报告相同问题?

悬赏问题

  • ¥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