首页 > 数据库技术 > 详细

解决因为链表过长,sql查询慢的问题

时间:2014-09-11 10:52:11      阅读:993      评论:0      收藏:0      [点我收藏+]

/**
 * 解决因为链表过长,sql查询慢的问题
 * 使用分治算法,先切分链表,然后查询结果,最后合并结果
 *
 * @author lingpy
 * @since 1.0
 */
public class DivideAndConquerUtil {
    /**
     *
     * @param dataList 元数据
     * @param exceuter 执行类
     * @return
     * @throws Exception
     */
    public static <R extends Map, E> R query(List<E> dataList,Executer<R,E> exceuter)throws Exception{
        return query(dataList,exceuter,100);
        
    }
    
    /**
     *
     * @param dataList
     * @param exceuter
     * @param subArrayLength 切分的粒度
     * @return
     * @throws Exception
     */
    @SuppressWarnings("unchecked")
    public static <R extends Map, E> R query(List<E> dataList,Executer<R,E> exceuter,int subArrayLength)throws Exception{
        if(dataList == null || dataList.size() <= subArrayLength){
            return exceuter.execute(dataList);
        }
        R result = null;
        int start = 0, end = start;
        while(start < dataList.size()){
            end = start + subArrayLength;
            if(end  > dataList.size()){
                end = dataList.size();
            }
            R r = exceuter.execute(dataList.subList(start, end));
            if(result == null){
                result = r;
            }else{
                result.putAll(r);
            }
            start = end;
        }
        return result;
    }
    
    public interface Executer<R,E>{
        R execute(List<E> dataList) throws Exception;
    }
}

解决因为链表过长,sql查询慢的问题

原文:http://www.cnblogs.com/lingepeiyong/p/3965807.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!