如果表数据都比较多,后面的更高效。因为union是需要过虑掉重复记录的,数据库需要做排序。如果你的逻辑是从三张表中取出所有记录,不管是否有重复记录,或者业务逻辑确保没有重复记录,那么将union改为union all,这样一次查询比分三次做更高效,减少了交互次数和语句分析次数等,但差异应该不是很大。

解决方案 »

  1.   

    和数据库建立一次连接,解析一次sql文是否要占用很多的资源呢?
    和在一个一万条记录的表中做全查询(select * from a)相比,这个比例大概能有多少?如果频繁(我做的程序执行一次要调用接近100次sql查询)查询很多次的话会不会对连接池或者数据库造成一定的影响?
      

  2.   

    个人认为,全表查询>建立连接>解析SQL,如果SQL语句不是那种特别复杂的。
    JAVA我不了解,不知道是如何访问oracle的,不知道这样的查询对连接池是否有影响。但对数据库应该是有影响的。需要将这些sql进可能用绑定参数的方式调用,这样可以减少分析的次数。