当前位置: 代码迷 >> VB Dotnet >> vb.net操作数据库的效率有关问题
  详细解决方案

vb.net操作数据库的效率有关问题

热度:170   发布时间:2016-04-25 02:21:31.0
vb.net操作数据库的效率问题
最近在写一个vb.net客户端链接远程数据库的程序,发现程序和数据库交互效率特别低。本来怀疑数据库服务器带宽的问题,但是今天监控了一下各个环节的耗时,结果让我很惊讶,哪位高人能指点一下为什么效率是在fill环节这么低,我想要提高效率应该在哪里做一些优化        

Dim m_SqlConn As MySqlConnection        
m_SqlConn = Nothing        
Try   
Dim str As String            
str = "1:" & get_now() & Now.Millisecond            
m_SqlConn = connect_sql()            
str = str & vbCrLf & "2:" & get_now() & Now.Millisecond            
Dim strQuery As String = "select name from xxxx "            
Dim daAdapter As MySqlDataAdapter = New MySqlDataAdapter(strQuery, m_SqlConn)            
str = str & vbCrLf & "3:" & get_now() & Now.Millisecond            
Dim dsTable As DataSet = New DataSet            
str = str & vbCrLf & "4:" & get_now() & Now.Millisecond            
daAdapter.Fill(dsTable)            
str = str & vbCrLf & "5:" & get_now() & Now.Millisecond            
MsgBox(str)        
Catch            
MsgBox("连接数据库出现异常,请检查你的网络,点击退出!")        
Finally            
m_SqlConn.Close()  
End Try
        
      如上是我的代码简化版,我监控了一下各个步骤的耗时,在第4步以前都是毫秒级的,时间完全一致,在第4步到第5步之间居然耗时1.5S,没错,是1.5S而不是1.5毫秒,这让我非常不能理解,请各位指点。为什么是这样 
------解决方案--------------------
请你告诉我,凭什么你认为fill应该是1.5毫秒呢?


比如说我写1000行代码的一个程序,而你不过是声明了三个变量,给第一个变量设置了一个叫做“数据库连接”字符串的属性,给第二个变量变量传了一个(或者两个)叫做“查询Sql语句”的字符串属性,第三个变量不过是定义了一下类型名称,而真正的连接数据库、等待数据库响应、查询数据、等待数据库返回数据、对数据进行解析、创建内存数据库结构等等比你的代码多一万倍功能的工作,都是我的方法做的。你凭什么要求我的方法跟你的三个变量的声明速度一样?
------解决方案--------------------
引用:
只有1行,我的软件返回数据量都不大,最多也就20几行,我测试下来1行和20行在这个fill环节都是1.5S左右


你应该使用ado.net自己写,并且自己创建一个DataSet来保存数据。这样就知道问题出在哪里了。
------解决方案--------------------
也许Fill的时候才是真正的连接数据库,执行查询,返回结果,填充DataSet

  相关解决方案