表中有50多万数据 查询速度极慢 请oracle高手帮忙解决下, 哪种方案比较合理 先谢谢啦。。 方案一:
String sql = "select a,b,c,d from abcd order by updatetime desc"; //50多万数据全部查出来了。
List newList = intser.getlistBySQL(sql);
List newUpdateList = newList .subList(0,17); //页面只显示最新的16条数据。
request.setAttribute("newUpdateList",newUpdateList); // 最新更新的16条数据 向页面传值
方案二:
String sql = "select a,b,c,d from (select a,b,c,d from abcd order by updatetime desc) where rownum <=16 ";
//50多万数据按更新时间全部查出来之后,再去前16条数据。
List newList = intser.getlistBySQL(sql);
request.setAttribute("newList",newList); // 最新更新的16条数据 向页面传值
String sql = "select a,b,c,d from abcd order by updatetime desc"; //50多万数据全部查出来了。
List newList = intser.getlistBySQL(sql);
List newUpdateList = newList .subList(0,17); //页面只显示最新的16条数据。
request.setAttribute("newUpdateList",newUpdateList); // 最新更新的16条数据 向页面传值
方案二:
String sql = "select a,b,c,d from (select a,b,c,d from abcd order by updatetime desc) where rownum <=16 ";
//50多万数据按更新时间全部查出来之后,再去前16条数据。
List newList = intser.getlistBySQL(sql);
request.setAttribute("newList",newList); // 最新更新的16条数据 向页面传值
方案二 合理,就是分页查询,你这个sql只是第一页的,第二页的写法不一样;
可以对a,b,c,d,updatetime建索引
但是索引建得过多会影响insert和update操作的性能
然后再进行分页查询
order by 使用索引是有条件的:
1)ORDER BY中所有的列必须包含在相同的索引中并保持在索引中的排列顺序.
2)ORDER BY中所有的列必须定义为非空.
3)另外,如果ORDER BY中的列在where 条件中出现,也会使用索引
怎样设置 statement缓冲池 ??