当前位置: 代码迷 >> SQL >> sql in 话语最大上限1000
  详细解决方案

sql in 话语最大上限1000

热度:19   发布时间:2016-05-05 12:18:52.0
sql in 语句最大上限1000
   当我们用sql in语句进行查询时候。Oracle默认支持in中的数量为1000.
这也是为了sql的性能处理,因为in 的性能本来就不很好。所以遇到这种情况最好是通过关联查询进行处理。如果关联查询不能实现你的逻辑,就抛弃性能吧。拼接sql吧。可以通过 or in 进行实现(不推荐)
  其中进行拼接方法:
	private static String getOracleSQLIn(List<?> ids, int count, String field) {	    count = Math.min(count, 1000);	    int len = ids.size();	    int size = len % count;	    if (size == 0) {	        size = len / count;	    } else {	        size = (len / count) + 1;	    }	    StringBuilder builder = new StringBuilder();	    for (int i = 0; i < size; i++) {	        int fromIndex = i * count;	        int toIndex = Math.min(fromIndex + count, len);	        String productId = StringUtils.defaultIfEmpty(StringUtils.join(ids.subList(fromIndex, toIndex), "','"), "");	        if (i != 0) {	            builder.append(" or ");	        }	        builder.append(field).append(" in ('").append(productId).append("')");	    }	    return StringUtils.defaultIfEmpty(builder.toString(), field + " in ('')");	}
  相关解决方案