SQL查询的性能非常不好

我有一个SQL数据库包含从雅虎下载股票吧! 我试图创造一些指标来分析这些股票(即简单移动平均线)。 我很担心我的查询的性能,这是简单地更新@stockname SET SMA = @value WHERE ID = @n。 要更新2K行需要2分钟,听起来总给我! 我试着用一个存储过程,但结果几乎是一样的。

for (int i = 0; i < closing_prices.Count - length; i++) { double signalValue signalValue = Selector.SignalProcessor(Signal, closing_prices.GetRange(i, length), length); //Write the value into the database string location = Convert.ToString(i + length + 1); this.UpdateWithSingleCondition("_" + Instrument, columnName, signalValue.ToString(), "id", location, "=", sql_Connection); }

这个循环调用存储过程中生成一个新值每次更新列SMA。 是否有可能直接整列投入数据库? 我想,这可以节省时间。 在2分钟更新反正500行听起来非常非常慢...

--------------解决方案-------------

我想创建一个接收一个字符串存储的过程。 此字符串是一个XML或delimeted字符串。

然后使用许多字符串之一左右浮动表函数

  • (delimeted字符串)http://blogs.x2line.com/al/articles/150.aspx
  • (XML)http://kennyshu.blogspot.com/2007/12/convert-xml-file-to-table-in-sql-2005.html

和字符串转换到一个临时表。

然后从临时到目标表进行插入。

这样,你做一个调用数据库服务器,避免喋喋不休。 它的很多比多次调用快。

避免表的参数,因为你不能从代码中调用他们。

不是一次写值出一个,也许你可以使用带有表值参数的存储过程出货在一个单一的操作,从您的应用程序到数据库中的数据然后将数据合并到表中,节省了大量的圆头跳闸。

分析你的表现。 你必须有一些瓶颈。 您更新计数真的很低。 你应该很容易能够做到每秒钟这将转化为更大量在2分钟内10-30更新....那是一个存量的计算机上,连一个也没有值得数据库(这将意味着许多快速光盘)。

做SQL Server的性能分析,找出你的瓶颈。 你都需要指标?

首先禁用外部约束的关键。 然后再次启用它们:

要禁用“ALTER TABLE”,“WITH NOCHECK约束中的所有”

要ANABLE它们,请使用“ALTER TABLE”连同“WITH CHECK约束中的所有”。

分类:SQL 时间:2015-03-15 人气:0
本文关键词: SQL,SQL Server中,TSQL
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.982 (s). 10 q(s)