开发环境:PB9.0+ORACLE8i涉及四个张
我自己做了一个查询,在PL/sql执行同一个语句,以下记录,只要0.969秒在PB执行查询,只要3秒select count(*) from resa_sa_doc ------销售流水表73173条记录
select count(*) from resa_sa_dtl ------销售明细表143772条记录
select count(*) from pub_goods_price ------商品价格表393310条记录
select count(*) from pub_goods ------商品信息表21845条记录
-------------------------------------------------------------------------------执行同一个语句,以下记录,长达两分钟
在PB执行查询,长达十分钟select count(*) from resa_sa_doc ------销售流水表1662304条记录
select count(*) from resa_sa_dtl ------销售明细表3348437条记录
select count(*) from pub_goods_price ------商品价格表387370条记录
select count(*) from pub_goods ------商品信息表21515条记录
-------------------------------------------------------------------------------------
我是菜鸟,而且三年多不碰编程了,不懂得怎么做。
各位兄弟姐妹如果有兴趣,可以帮我一下,不胜感激。
我的QQ:286016189
--------------------------------------------------------------------------
select count(1) from resa_sa_doc --------56秒 1662304条记录
select count(1) from resa_sa_dtl --------64秒 3348437条记录
select count(1) from pub_goods_price --------3.5秒 387370条记录
select count(1) from pub_goods --------3秒 21515条记录

解决方案 »

  1.   

    有一个办法,你查询的这几张表都有索引没?试试把索引加到你的where条件中,比如说:
    表resa_sa_doc的索引字段是(col1 varchar2, col2 number, col3 number),
    这样加条件就行:
    select count(1) from resa_sa_doc where col1 <> '' and col2 <> 0 and col3 <> 0;
    然后比较加了where条件前后的执行计划,
    肯定会有所变化的。
      

  2.   

    新做了一个日期索引 PB代码日期由原来的to_char 改为 to_date,速度快了许多谢谢大家