查询条件大概有5到6个这样,每个条件均是一个范围,每个范围里大概有10个左右的数据,这样如何能保证查询效率例如 条件a的范围(a1 ,a2,a3,a4......a10) and  b的范围 b(...),...,e的范围 e(....)还要考虑到虚拟机内存的消耗,不可以一下子查出一堆数据,自己慢点过滤。
我想如果把这几个条件拼成一个string[]数组,里面是一堆where a=a1 and b=b1 and 然后做个批量查询会不会快呢?不知道怎么办,各位大侠帮忙~~

解决方案 »

  1.   

    我是主调别人的接口,传个sql过去,由于对方不关心我们的业务,所以我这边要尽量解决效率问题贴不出执行计划
      

  2.   

    举个例子,表中数据大概50万,需要查询的字段均不能加索引 例如过滤条件有 a1,a2,a3,a4,a5 a1的取值:(1,2,3,4...10) 
    a2的取值:(1,2,3,4...10) 
    a3的取值:(1,2,3,4...10) 
    a4的取值:(1,2,3,4...10) 
    a5的取值:(1,2,3,4...10) 如果用 where a1 in (1,2,3,4...10) and a2 in (1,2,3,4...10) and a3 in (1,2,3,4...10) and in a4 (1,2,3,4...10) and a5 in (1,2,3,4...10)查询起来非常慢 一条记录大概4.6kB 
      

  3.   

    业务的细分和优化是根本,针对一些情况进行优化。
    不能建索引,不明白,难道有强制?10楼的联合索引是可以考虑。
    另外一个途径是硬件换性能,当然是可以承受的硬件换性能。
    例如装在在三台电脑上都装oracle,A,B,C。 同步这个表格。
    同时对于WEB服务器,或者是应用服务器进行负载均衡,这样装的机器越多,性能越快。如果数据量不是很大,变化不是很频繁,MONEY又在可接受的范围内,可以考虑。