日期:2014-05-17  浏览次数:20841 次

帮助优化下语句八十万数据量
SELECT AJBH A0, 
  AJMC A1
  ---40个字段
   
  FROM GX_AJJBXX 
WHERE INSTR(BAR || ',', '202616' || ',') > 0 
  AND AJLB < '200000' 
ORDER BY DJSJ DESC

------解决方案--------------------
贴出执行计划。
------解决方案--------------------
支持,贴出执行计划。
无计划,无真相!
------解决方案--------------------
SQL code

 掌握两条条原则:
  1.where 的执行顺序从下往上过滤,先过滤数据多的。
  2.条件最好不要是= 而是>= 或<=

------解决方案--------------------
1. 将 =这些条件放在前面,能过滤大部分的条件
2. 少用in ,not in 这些
3. 使用存在的时候, 语句使用select 1 的条件;如exists(select 1 from )
4. 连接的条件放在后面
5。减少子表的使用,
还有很多在你实际用的时候自己总结
对于你的问题,加快速度的话可以增加一些索引,这样速度比较快
------解决方案--------------------
执行计划
------解决方案--------------------
就索引来说,最基于INSTR(BAR || ',', '202616' || ',')函数索引,
基于列AJLB的索引,
当然建了索引,能否用上,还要看选择性怎么样。