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

VB.NET源码-156个实用实例哦…… <script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
如何来优化sqldatareader的读取速度
最近因为需要转换一个地区的人口数据,用SqlDataReader来读取,然后进行转换,可不知道为什么,读的时候一开始还比较快,每秒钟可以达到40条左右,可到后面则越来越慢,每秒钟只能读到4到5条记录。百思不得其解,望各位高手指点
另附代码
--先读取到各个乡镇的最小单位(村)
--因为怕数据太多造成读取速度慢,所以简化到最小单位
_mDataset = DBClass.GetAreaNoDataset( select ID,dwdm1,dwmc from wisdmk where dwdm1 like & _fjAreaNOB & % and len(dwdm1)=12 , 0 , 0 , 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, 0 , 0 , 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也要注意一下呢?
__________________________________________________________________________
利用存储过程来设计数据库!
__________________________________________________________________________
本来是想用存储过程,可惜,我是要用客户的数据库来导,所以存储过程这个功能用不上了,自己这边的数据库是用存储过程
__________________________________________________________________________
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值