回 帖 发 新 帖 刷新版面

主题:为什么SQL查询语句会导致程序运行速度慢

sub dispPort(station_code)
    /*111*/strSql = "select a.port_code, a.port_class_code, a.prop_code, isnull  (a.alert_value,0) alert_value, isnull(a.powerOff_value,0) powerOff_value from chk_port_info a, prop b "&_where a.prop_code = b.prop_code and a.port_class_code=b.prop_class_code and a.flag=1 and station_code="&_station_code  & " order by port_code "
    set portRs = server.CreateObject("adoDB.recordset")    
    portRs.Open strSql, DbConn
 if portRs.EOF  then  exit sub  else
    'Response.Write     strSql & "<BR>"
 end if
     i_loop = 1 
     do while not portRs.EOF        
         staCode  =  strNumber(station_code)
         portCode =  portRs("port_code")
         code =  strNumber(station_code) & strNumber(portRs("port_code"))

      '如果是瓦斯,则计算报警增长报警值
      if cint(session("gAlert")) = 1 and cint(portRs("port_class_code"))=2 and cint(portRs("prop_code")) =3 then gAlert = portRs("alert_value")    
/*2222*/ strSql = "select avg(simulator_value) avg_value from chk_port_data where station_code=" &_staCode & " and port_code=" & portCode &_ and chk_time between dateadd(day, -" & session("before_day") & ", convert(varchar(10),getdate(),111)) and  convert(varchar(10),getdate(),111)   "
     set AlertRs = server.CreateObject("adoDB.recordset")    
     AlertRs.Open strSql, DbConn
     alert_value = AlertRs("avg_value") 
  if (not isnull( alert_value ))  then 
     if  CDbl(alert_value) > 0 then
     gAlert = CDbl(alert_value) * ( 1 + cint(session("growingPercent")) / 100) 
    end if    
end if    
  Response.Write "//alert_value: " & portRs("alert_value")&  chr(13) & chr  (10)Response.Write "//galert: " & gAlert &  chr(13) & chr(10)    
else
   gAlert = null
end if
/*3333*/  strSql="select top 1  simulator_value, switch_value,power_state, " &_"convert(tinyint,comm_state) comm_state , isnull(alert_state,0) alert_state, isnull(offline_state,0) offline_state, " &_"isnull(posi_state,0) posi_state,convert(tinyint,poweroff_state) poweroff_state, convert(tinyint,crc) crc " &_" from chk_port_data  "&_" where station_code=" & station_code  & " and port_code=" &portRs("port_code") &_" and chk_time>='" & ref_time & "'  order by chk_time desc "
    set portDataRs = server.CreateObject("adoDB.recordset")    
    portDataRs.Open strSql, DbConn
if not portDataRs.EOF  then
 '该分站有新数据, 改变分站的供电状态和通讯状态
   if i_loop = 1 then 
       power_msg = getStationMsg("power", portDataRs("poweroff_state")) 
       comm_msg = getStationMsg("comm", portDataRs("comm_state")) 
        crc_msg = getStationMsg("crc", portDataRs("crc")) 
Response.Write "parent.frmUp.changeValue('power_" & staCode & "', '" & power_msg & "')" & chr(13) & chr(10)
Response.Write "parent.frmUp.changeValue('comm_" & staCode & "',  '" & comm_msg  & "')" & chr(13) & chr(10)    
Response.Write "parent.frmUp.changeValue('crc_" & staCode & "',  '" & crc_msg  & "')" & chr(13) & chr(10)    
   i_loop = 0
end if
  state_temp = getPortState(cint(portRs("port_class_code")), cint(portRs("prop_code")), gAlert, portRs("alert_value"), portRs("powerOff_value"), portDataRs("simulator_value"), portDataRs("switch_value"), portDataRs("power_state"), portDataRs("comm_state"), portDataRs("alert_state"), portDataRs("offline_state"),portDataRs("posi_state"),portDataRs("poweroff_state"))
   value_temp = valueOfPort
   state_temp = stateOfPort    
Response.Write "parent.frmUp.changeValue('value_" & code & "','<b>" & value_temp & "')" & chr(13) & chr(10)
Response.Write "parent.frmUp.changeValue('state_" & code & "','<b>" & state_temp & "')" & chr(13) & chr(10)
else        
    value_temp = "======"
    state_temp = "======"
Response.Write "parent.frmUp.changeValue('value_" & code & "','<b>" & value_temp & "')" & chr(13) & chr(10)
Response.Write "parent.frmUp.changeValue('state_" & code & "','<b>" & state_temp & "')" & chr(13) & chr(10)            
end if        
'该分站没有新数据
if i_loop = 1 then
   Response.Write "parent.frmUp.changeValue('power_" & staCode & "', '<b>======')" & chr(13) & chr(10)
  Response.Write "parent.frmUp.changeValue('comm_" & staCode & "',  '<b>======')" & chr(13) & chr(10)                
  Response.Write "parent.frmUp.changeValue('crc_" & staCode & "',  '<b>======')" & chr(13) & chr(10)
  i_loop = 0
end if
portRs.moveNext
 loop
  portRs.Close        
end su

请问下上面这段代码为什么我把/*3333*/中的SQL语句中where条件中的port_code=" &portRs("port_code") 屏蔽掉我的程序运行速度就快,不屏蔽的话就运行速度慢,能帮我看下这代码问题在哪里吗?但是port_code=" &portRs("port_code") 不能删掉  

回复列表 (共1个回复)

沙发

应该是语句有问题,可能是字段类型不对

我来回复

您尚未登录,请登录后再回复。点此登录或注册