提高SQL下一行的性能

时间:2011-12-20 15:22:13

标签: sql performance sql-server-2005

我编写了一个执行大约40个查询的应用程序,然后对每个查询的结果进行一些处理。 (现在我在带有SQL Server 2005的Windows XP上的Visual C ++ 6.0中使用Qt 3.2.2,但这不是必需的。)范例是用查询创建一个QSqlQuery对象(这会导致查询到然后while (query.next()) { operate(query.value(0)); }通过分析我发现query.next()调用占用了程序的一半时间,这似乎过多,因为它只是取一行数据(6或7个字段)。

这种表现是不可接受的,我正在寻找一种改进方法。我愿意改变任何事情 - 切换我的编译器,切换语言,切换我用来从数据库中获取数据的范例。我怎样才能加快速度呢?

以下是查询:

select rtrim(Portfolio.securityid), rtrim(type), rtrim(coordinate), rtrim(value) 
from MarketData
inner join portfolio 
on cast(MarketData.securityid as varchar(36))=portfolio.securityid
where Portfolioname=?
and type in 
   ('bond_profit', 'bondoption_profit', 'equity_profit', 'equityoption_profit')
and marketdate=?
order by Portfolio.securityid, type, coordinate

程序运行时CPU使用率约为40%,因此我怀疑它花费大部分时间等待.next()调用返回更多数据。

在SSMS中执行相同的查询会在大约5分钟内返回450万行,但在程序运行期间等待.next()所花费的总时间为30分钟。

0 个答案:

没有答案