求一个数据操作时的优化

jinjiabo 2010-07-02 02:49:52
有A库中表a,B库中表b。将a表中数据取出插入到b表,成功则删除a表中相应的记录。
每次插入数据时动态更换连接字符串为A库连接,删除时则改为B库连接,连接字符串为一静态变量。
现在问题是速度很慢,请问各位怎么让速度变快点,谢谢。
...全文
137 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuyq11 2010-07-02
  • 打赏
  • 举报
回复
批量数据操作SqlBulkCopy
或读取数据到数据集,sqldataadapter
连接字符串到config文件,资源释放using
也可在sql server实现
kkbgp 2010-07-02
  • 打赏
  • 举报
回复
把每个步骤的执行时间打印出来,看看哪一步花费的时间太多,定位好后解决也方便
jinjiabo 2010-07-02
  • 打赏
  • 举报
回复
在线等
jinjiabo 2010-07-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 kevin_cheung 的回复:]
1.别改链接 用两个数据库访问类
2.把数据库链接作为数据库访问类中构造函数的参数
[/Quote]
刚按你说的第一条改了下,速度还是慢。
贴一段代码,大家看看有啥问题没
 //循环要同步的表
foreach (string key in tablesList)
{
string tableName = key;
//得到要同步的数据
string sqlString = string.Format("Select Top 100 * From {0} Order By {1} asc", tableName, primaryName);
dataAdapter = new SqlDataAdapter(sqlString, A表连接);
DataSet ds = new DataSet();
dataAdapter.Fill(ds);
DataTable dataTable = ds.Tables[0];

try
{
StringBuilder insertString = new StringBuilder();
//循环要同步数据的行
foreach (DataRow dataRow in dataTable.Rows)
{
insertString.Append(" insert into " + tableName + " values(");

//循环要同步的数据的列
foreach (DataColumn dataColumn in dataTable.Columns)
{
// 如果为int型则不需要再SQL语句中加单引号
if (dataColumn.DataType == System.Type.GetType("System.Int32"))
{
insertString.Append(dataRow[dataColumn.ColumnName]);
}
else //否则加上单引号
{
insertString.Append("'");
insertString.Append(dataRow[dataColumn.ColumnName]);
insertString.Append("'");
}

insertString.Append(",");
}

//移除最后一个多余的逗号
insertString.Remove(insertString.Length - 1, 1);
insertString.Append(")");

if (OperData(insertString.ToString(), B表连接))
{
string deleteString = "Delete From " + tableName + " Where " + primaryName + "=" + dataRow[primaryName];

OperData(deleteString, A表连接);
}
}
}
catch (Exception exception)
{
}
jinjiabo 2010-07-02
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 woai5354 的回复:]
怎么还要更改数据库连接?你是从serverA到serverB?
[/Quote]
用程序写的,不是在数据库中
woai5354 2010-07-02
  • 打赏
  • 举报
回复
怎么还要更改数据库连接?你是从serverA到serverB?

woai5354 2010-07-02
  • 打赏
  • 举报
回复
insert into [B].[dbo].[b](field) select [A].[dbo].[a]
ztlover 2010-07-02
  • 打赏
  • 举报
回复
首先要明确,慢是因为查询后插入慢、删除慢还是更换连接导致的慢!
如果是数据库慢可以考虑:
1、优化数据库设置
2、建立索引
3、分布插入

如果是跟换连接导致慢,参考2楼的
LovingAlison 2010-07-02
  • 打赏
  • 举报
回复
1.别改链接 用两个数据库访问类
2.把数据库链接作为数据库访问类中构造函数的参数
jinjiabo 2010-07-02
  • 打赏
  • 举报
回复
不好意思,这句写错了
每次插入数据时动态更换连接字符串为B库连接,删除时则改为A库连接,连接字符串为一静态变量。
【为什么学习数据挖掘】       人工智能、大数据代有什么技能是可以运用在各种行业的?数据分析就是。      从海量数据中获得别人看不见的信息,创业者可以通过数据分析来优化产品,营销人员可以通过数据分析改进营销策略,产品经理可以通过数据分析洞察用户习惯,金融从业者可以通过数据分析规避投资风险,程序员可以通过数据分析进一步挖掘出数据价值,它和编程一样,本质上也是一个工具,通过数据来对现实事物进行分析和识别的能力。不管你从事什么行业,掌握了数据分析能力,往往在其岗位上更有竞争力。【超实用的课程内容】      本课程为Python数据挖掘方向的入门课程,课程主要以真实数据为基础,详细介绍数据挖掘入门的流程和使用Python实现pandas与numpy在数据挖掘方向的运用,并深入学习如何运用scikit-learn调用常用的数据挖掘算法解决数据挖掘问题,为进一步深入学习数据挖掘打下扎实的基础。本课程分为三大部分:基础知识篇:主要讲解数据挖掘这项技能的基本工作流程和介绍和入门必须的基本技能Python语言的入门,带领大家了解数据挖掘的常见操作和基础知识。数据采集篇:学习如何解决数据挖掘的数据来源问题,读取各类型不同的数据包括CSV,excel,MySQL进行数据采集的交互。数据探索篇:本篇主要解决数据的预处理保证数据的质量并用常见数据挖掘算法进行特征提取,分析数据背后隐含的信息。【报名须知】课程采取录播模式,课程永久有效,可无限次观看课件、课程案例代码完全开放给你,你可以根据所学知识,自行修改、优化【如何开始学习?】PC端:报名成功后可以直接进入课程学习移动端:下载CSDN学院或CSDN

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧