IPAddress.mdb 查询速度慢的问题

ttm1984 2007-11-12 03:25:02
<!--
MDB1: bbs.mdb
Table:bbs
id--------ip----------------mac----------------time
0--------192.168.0.1--------cb1122334455--------2007-11-11
1--------192.168.0.2--------001122aa34455--------2007-11-11
2--------192.168.0.3--------001166334455--------2007-11-11
3--------192.168.0.4--------005522334455--------2007-11-11
.
.
++++++++++++++++++++++++++++++++++++++++++++++++

MDB2:IPAddress.mdb #动网的数据库
Table:dv_address

id--------ip1----------------ip2----------------Country
0--------1032826880---------1032829439----------中国广东
2--------1032842613---------1032842615----------中国广东省茂名市
.
.

//-->
<%
'通过查询IP数据库返回IP地址对应的物理地址
Function lookaddress(sip)
Dim str1,str2,str3,str4
Dim num
Dim irs,SQL
If isnumeric(left(sip,2)) Then
If sip="127.0.0.1" Then sip="192.168.0.1"
str1=left(sip,instr(sip,".")-1)
sip=mid(sip,instr(sip,".")+1)
str2=left(sip,instr(sip,".")-1)
sip=mid(sip,instr(sip,".")+1)
str3=left(sip,instr(sip,".")-1)
str4=mid(sip,instr(sip,".")+1)
If isNumeric(str1)=0 Or isNumeric(str2)=0 Or isNumeric(str3)=0 Or isNumeric(str4)=0 Then

Else
'计算IP地址数字值
num=cint(str1)*256*256*256+cint(str2)*256*256+cint(str3)*256+cint(str4)-1
Dim adb,aConnStr,AConn
adb = "ipaddress.mdb"
aConnStr = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " & Server.MapPath(adb)
Set AConn = Server.CreateObject("ADODB.Connection")
aConn.Open aConnStr
'查询IP地址对应物理地区
sql="select country,city from dv_address where ip1 <="&num&" and ip2 >="&num
Set irs=aConn.Execute(sql)
If irs.eof And irs.bof Then
lookaddress="--" 'template.Strings(12)
Else
Do While Not irs.eof
lookaddress=lookaddress &irs(0) & irs(1)
irs.movenext
Loop
End If
irs.close
Set irs=nothing
Set AConn=Nothing
End If
Else
lookaddress="--" 'template.Strings(12)
End If
End Function
%>
''''''''''''''''以上为IP地址到物理地址的查询函数
''''''''''''''''以下为统计数据查询结果界面
<%
sql = "select * from bbs order by id desc"
set rs=Server.Createobject("ADODB.RECORDSET")
rs.Open sql, conn, 1, 1
if rs.EOF and rs.BOF then
response.write("暂时还没有数据!")
else
for i=1 to rs.pagesize
if rs.eof then exit for
%>
<tr height="20" onMouseOut="this.bgColor=''" onMouseOver="this.bgColor='#cccccc'">
<td width="30"><%=rs("id")%></td>
<td width="80"> <%=rs("ip")%></td>
<td width="80"> <%=rs("ip_client")%></td>
<td width="200"> <%=lookaddress(rs("ip"))%></td>
<td width="155"> <%=rs("ip_time")%></td>
</tr>
<%
rs.movenext
next
end if
%>
<% set rs=nothing %>
<% end if %>


期望结果:
ID IP 所在地区 激活时间
556 127.0.0.1 局域网 2007-11-12 11:33:25
555 127.0.0.1 局域网 2007-11-12 上午 07:17:34
554 127.0.0.1 局域网 2007-11-12 上午 07:16:54
553 127.0.0.1 局域网 2007-11-12 上午 02:42:31
552 127.0.0.1 局域网 2007-11-12 上午 02:38:18
551 127.0.0.1 局域网 2007-11-12 上午 02:34:58
550 127.0.0.1 局域网 2007-11-12 上午 02:27:42
549 127.0.0.1 局域网 2007-11-12 上午 01:50:22
548 127.0.0.1 1.1.1.2 局域网 2007-11-12 上午 01:30:05
547 127.0.0.1 1.1.1.2 局域网 2007-11-12 上午 01:30:01
546 127.0.0.1 局域网 2007-11-12 上午 01:29:54
545 127.0.0.1 局域网 2007-11-12 上午 01:29:46
544 127.0.0.1 局域网 2007-11-12 上午 12:30:05
543 127.0.0.1 169.33.44.55 局域网 2007-11-11 下午 05:42:17
542 127.0.0.1 169.254.23.123 局域网 2007-11-11 下午 04:52:42
541 127.0.0.1 192.168.0.22 局域网 2007-11-11 下午 04:18:26
540 139.45.6.7 192.168.0.1 德国 2007-11-11
539 202.106.0.20 10.1.10.33 北京市 2007-11-11
538 211.144.169.179 192.168.1.23 重庆市 联通 2007-11-11

-------------
以上功能上没有任何问题,但是数据查询的速度太慢!要等10多秒(总过500多条数据)。
不知道哪位朋友能解决问题,谢谢。
希望做过统计系统的朋友帮个忙:)

...全文
157 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
ttm1984 2007-11-12
  • 打赏
  • 举报
回复
谢谢littlelam!
恍然大悟,呵呵。
littlelam 2007-11-12
  • 打赏
  • 举报
回复
要效率高,就多加个字段,记录IP的时候同时从IP表查出对应的物理地址再 把IP和物理地址一起记录进去。

28,404

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧