解决方案 »

  1.   

    走了pk_org和caccountperiod的组合索引
    问题在于,700万记录里,语句执行结果有多少条,而这个结果主要是由语句的那么多条件里的那个过滤的
      

  2.   

    光这些没法优化。
    你的数据特点是什么,可以考虑按照时间分区,
    针对条件中重复度高的可以建位图索引,例如
    cstordocid = '原料仓'满足这个数据多吗。要分析你数据的构造。
      

  3.   

    从上面的执行计划来看,查询使用了( pk_org,caccountperiod)的联合索引,但效率不高,因为匹配 pk_org = '1001N710000000008MPF' and and caccountperiod > = '2013-11'  and caccountperiod < = '2014-09' 的记录数很大。可以分析上面的查询条件中哪个或哪些匹配的记录数最少,然后创建相应的索引。
      

  4.   

    建议你这个只能建组合索引,单个索引效果不是很明显,
    然后把过滤大的排在前面,如果不会组合索引,百度一下
    http://blog.sina.com.cn/s/blog_5f597b690102v9tt.html
      

  5.   

    建议首先将用到复合索引的字段放到WHERE条件最后,SQL解析的方式是先从远离WHERE条件的字段先进行过滤。在就是少用IN和OR