【发布时间】:2012-07-17 21:31:01
【问题描述】:
我想执行以下查询并将其放在我的 asp.net 应用程序中的 gridview 上
select *
from INDICATORS, places, places_sales
where places_sales.id = places.id
and
INDICATORS.line in (select line from lines)
lines 表有 28000 条记录,INDICATORS 有 18000 条
这个查询在 oracle sql developer 中执行需要 6 秒,但在我的 asp.net 应用程序中(使用 oracle dataacess 作为连接器)需要大约 20 分钟
有没有办法优化我的查询?
【问题讨论】:
-
您确定查询在 asp.net 中有那么慢,还是您将所有结果呈现到浏览器窗口,而这是花费大部分时间的原因?
-
@hmqcnoesy 你是对的,我调试了我的代码,最耗时的是将结果渲染到一个网格视图中,即使我的网格视图是分页的:S 我该如何解决这个问题?
-
因为默认pl sql developer不获取所有结果,这可能是原因
-
在查询本身上实现分页(可能在 WHERE 子句中)——也就是说,每次填充 Gridview 控件时只获取一个数据子集。现在,您正在抓取所有数据,即使在 Gridview 中启用了分页,它仍然必须处理所有这些数据。
-
禁用控件中的绘画,直到您完成填充它,然后重新启用绘画。不确定这在您的控件中是否可行,但在我们过去使用的电子表格控件中解决了很多性能问题。