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

前端之家收集整理的这篇文章主要介绍了[VB.NET]如何来优化sqldatareader的读取速度前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如何来优化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也要注意一下呢? __________________________________________________________________________ 利用存储过程来设计数据库! __________________________________________________________________________ 本来是想用存储过程,可惜,我是要用客户的数据库来导,所以存储过程这个功能用不上了,自己这边的数据库是用存储过程 __________________________________________________________________________ 原文链接:https://www.f2er.com/vb/263368.html

猜你在找的VB相关文章