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

求各位兄弟姐妹帮我优化一下查询速度,有酬谢!(表有300百多万条记录)
开发环境: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条记录

------解决方案--------------------
有一个办法,你查询的这几张表都有索引没?试试把索引加到你的where条件中,比如说:
表resa_sa_doc的索引字段是(col1 varchar2, col2 number, col3 number),
这样加条件就行:
SQL code
select count(1) from resa_sa_doc where col1 <> '' and col2 <> 0 and col3 <> 0;