2012-07-17 36 views
0

慢我想执行下面的查询,并把它放在一个GridView在我的asp.net应用Oracle查询快的SQLDeveloper,在asp.net

select * 
from INDICATORS, places, places_sales 
where places_sales.id = places.id 
and 
INDICATORS.line in (select line from lines) 

线表中有像28000次的记录和指标像18000

此查询在6秒在Oracle SQL显影剂执行,但在我的asp.net应用程序(使用oracle dataacess为连接器)开20分钟就好

有一种方法,以优化我的查询?

+0

你确定查询是慢在asp.net,或者是你将所有结果渲染到浏览器窗口,这是大部分时间所要做的事情? – hmqcnoesy 2012-07-17 21:33:58

+0

@hmqcnoesy你是对的,我调试了我的代码,并且最需要花费时间的是将结果呈现为一个gridview,即使我的gridview是分页的:S我该如何解决这个问题? – 2012-07-17 21:39:02

+0

作为默认pl sql开发人员不会获取所有结果,这可能是原因 – adt 2012-07-17 21:51:00

回答

1

有一个你可以做几件事来加速它。

首先,是否有地方或places_sales之间加入指标?

如果有,你可以添加它,你可能会得到一个笛卡儿。

现在,对于优化片,请尝试以下操作:

SELECT * 
    FROM indicators, places, places_sales 
WHERE places_sales.id = places.id 
     AND EXISTS 
       (SELECT '' 
        FROM lines l 
       WHERE l.line = indicators.line) 
+0

这里有一个很好的区别:http://asktom.oracle.com/pls/asktom/f?p=100:11:0::NO::P11_QUESTION_ID:442029737684 – 2012-07-17 21:47:36

0

我会建议放置并作出指数表中,这样查询会更流畅。
使用聚簇型look this

我真的是像超过60000行的表和索引排序出来