加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

[VB.NET]如何来优化sqldatareader的读取速度

发布时间:2020-12-16 23:36:33 所属栏目:大数据 来源:网络整理
导读:如何来优化sqldatareader的读取速度 最近因为需要转换一个地区的人口数据,用SqlDataReader来读取,然后进行转换,可不知道为什么,读的时候一开始还比较快,每秒钟可以达到40条左右,可到后面则越来越慢,每秒钟只能读到4到5条记录。百思不得其解,望各位高
如何来优化sqldatareader的读取速度 最近因为需要转换一个地区的人口数据,用SqlDataReader来读取,然后进行转换,可不知道为什么,读的时候一开始还比较快,每秒钟可以达到40条左右,可到后面则越来越慢,每秒钟只能读到4到5条记录。百思不得其解,望各位高手指点 另附代码 --先读取到各个乡镇的最小单位(村) --因为怕数据太多造成读取速度慢,所以简化到最小单位 _mDataset = DBClass.GetAreaNoDataset( select ID,dwdm1,dwmc from wisdmk where dwdm1 like & _fjAreaNOB & % and len(dwdm1)=12,strfjConn) --循环村 For i = 0 To _mDataset.Tables(0).Rows.Count - 1 While dr.Read Dim mstr As String mstr = select * from wistable1 where modifydate> = & Now.ToShortDateString & and wisfield104 like & pAreano & % Dim dr As SqlDataReader = SynClass.GetSynchronousData(mstr,ClientConn) 生成Connection和Command对象的实例 Dim myConnection As SqlConnection = New SqlConnection(HostConn) myCmd = New SqlCommand( [JX_Insert_W_WomanBasic],myConnection) myCmd.CommandType = System.Data.CommandType.StoredProcedure myCmd.ExecuteNonQuery() myConnection.Close() End While myConnection.Close() dr.Close() SynClass.CloseMyConn() next __________________________________________________________________________ 首先:For i = 0 To _mDataset.Tables(0).Rows.Count - 1 这里你每循环一次_mDataset.Tables(0).Rows.Count就会计算一次,会影响速度,建议用一个变量来存放它; 其次:While dr.Read这里,原因同上,建议改进循环方法; 最后:mstr = select * from wistable1 where modifydate> = & Now.ToShortDateString & and wisfield104 like & pAreano & % 这里的select * ...来检索会影响速度,建议用select 罗列单个字段,...来检索; __________________________________________________________________________ 支持楼上的,如果 select * from wistable1 where modifydate 这个语句用的次数很多的话,尽量用存储过程代替 __________________________________________________________________________ For i = 0 To _mDataset.Tables(0).Rows.Count - 1 循环太多,能不能改变查询方法,一次性查出。比如可以做表的关联 __________________________________________________________________________ while里面反复创建connection和command,会有性能问题。 __________________________________________________________________________ 这代码真难看 __________________________________________________________________________ vb的.看着就烦.. __________________________________________________________________________ 帮UP __________________________________________________________________________ 做了很多同样重复的工作.浪费资源.可以重新考虑SQL语句. __________________________________________________________________________ 1)不要反復創建與關閉SqlConnection,可以在循環外創建與關閉 2)優化SQL語句與數據庫中創建索引 3)最好一次下一批查詢,這樣減少數據庫SELECT的時間。 __________________________________________________________________________ 这些代码,我也经过了改进,上面的只是粘贴一部分代码,没有多次创建和关闭SqlConnection,如果没有最前面的一个循环的话,那数据量将是大的惊人,最少的也有上万条记录,所以SqlDataReader必将承受不了,所以我用了循环来减少,按理说SqlDataReader的数量越少读取速度就越快,可到后面速度就慢,难道SQL语句能有这样大的反作用吗?再一个 如果不用 For i = 0 To _mDataset.Tables(0).Rows.Count - 1 next 这样的循环,那用何中方法呢?是否SqlDataReader也要注意一下呢? __________________________________________________________________________ 利用存储过程来设计数据库! __________________________________________________________________________ 本来是想用存储过程,可惜,我是要用客户的数据库来导,所以存储过程这个功能用不上了,自己这边的数据库是用存储过程 __________________________________________________________________________

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读