有个大型数据库,基于Oracle的,其中有几百万条记录,现在想从客户端执行查询操作,(只有查询权限,并且服务器不能建立存储过程等,因为服务器的东西不能动)。现在有20多条查询语句,如果每条语句递交到服务器进行查询的话,每条语句需要大概20分钟(返回的记录其实很少),如果把所有记录都取回然后在本地内存中进行比对,把一部分记录如100条读到内存中,然后全部分析此20多条查询语句,如此循环,好象全部读取加分析共花时3个小时左右)。各位有没有更高效的方法,我觉得好象提交SQL语句到服务器比对不应该这么慢的,有没有在服务器同时执行这些查询的方法(即只要扫描一遍数据库,就可以返回20条查询语句的结果)请提提建议。有好方案一定再加分。

解决方案 »

  1.   

    同意 libra163(石头) 的
    建议根据数据库本身的特性改善你的查询语句,有时候调整查询条件的次序也会有一些效果的。
      

  2.   

    我觉得还是你的sql语句可能有问题吧,能否随便把一个sql贴上来,大家一起分析一下.
    我对oracle sql语句优化还算有一点心得,也许可以帮到你.
      

  3.   

    对大表建index,索引数据不要有大量重复的。
    对oralce表空间进行COALESCE
    对talble&index进行analyze
    具体的语法可以参考oracle帮助,oracle的优化是一门很高的学问,需要对oracle结构有很深的了解,牛x的dba最喜欢研究这个。
      

  4.   

    你的数据库控件用的是ADO吗?如果是的话可以将控件的CusorLocation属性设置为clUseServer,这样不用将数据全部传到客户端就可以进行其它操作了,反正这种办法我试过Access的,一个1G多的数据库,用这种办法可以在瞬间显示出数据来,当然只是其中的一部分,如果需要其它的部分的时候,控件自动会将数据下载下来的!