如何来优化
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