主题:为什么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") 不能删掉
/*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") 不能删掉