请教:如何优化SQL语句提高运行效率和速度?
现在有两个表gkbmk和gktjk,我现在需要查询gkbmk中有而gktjk中没有的记录,两个表的联系字段为bmh,查询代码:dimwhereifbmd1<>""then...
现在有两个表gkbmk和gktjk,我现在需要查询gkbmk中有而gktjk中没有的记录,两个表的联系字段为bmh,查询代码:
dim where
if bmd1 <> "" then
where = where + " and bmd='"&bmd1&"' and bmh not in (select bmh from gktjk where bmd='"&bmd1&"')"
end if
if bj1 <> "" then
where = where + " and yhdy='"&bj1&"' and bmh not in (select bmh from gktjk where yhdy='"&bj1&"')"
end if
if gknf1 <> "" then
where = where + " and gknf='"&gknf1&"' and bmh not in (select bmh from gktjk where gknf='"&gknf1&"')"
end if
sql="select bmh,xm,xb,yhdy,bmd,sfzh,gknf from [gkbmk] where 1=1" + where + " order by gknf desc,bmh asc"
Set objRs=Conn.Execute("Select count(*) From gkbmk where 1=1" & where )'/*记录统计
Set rs= Server.CreateObject("ADODB.Recordset")
rs.open sql,conn,1,1
现在的问题是:数据量小的时候没问题,当gkbmk和gktjk中某个报名点(bmd)某年(gknf)的数据比较大的时候,运行会特别慢,要怎样优化代码来提高查询效率和速度? 展开
dim where
if bmd1 <> "" then
where = where + " and bmd='"&bmd1&"' and bmh not in (select bmh from gktjk where bmd='"&bmd1&"')"
end if
if bj1 <> "" then
where = where + " and yhdy='"&bj1&"' and bmh not in (select bmh from gktjk where yhdy='"&bj1&"')"
end if
if gknf1 <> "" then
where = where + " and gknf='"&gknf1&"' and bmh not in (select bmh from gktjk where gknf='"&gknf1&"')"
end if
sql="select bmh,xm,xb,yhdy,bmd,sfzh,gknf from [gkbmk] where 1=1" + where + " order by gknf desc,bmh asc"
Set objRs=Conn.Execute("Select count(*) From gkbmk where 1=1" & where )'/*记录统计
Set rs= Server.CreateObject("ADODB.Recordset")
rs.open sql,conn,1,1
现在的问题是:数据量小的时候没问题,当gkbmk和gktjk中某个报名点(bmd)某年(gknf)的数据比较大的时候,运行会特别慢,要怎样优化代码来提高查询效率和速度? 展开
4个回答
展开全部
建索引,
gkbmk和gktjk两个表,各加3个索引
1、bmd的索引
2、yhdy的索引
3、gknf的索引
gkbmk和gktjk两个表,各加3个索引
1、bmd的索引
2、yhdy的索引
3、gknf的索引
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
sql server 2005中有个,优化向导,可以优化sql语句,你把你的sql代码贴到里面,运行下优化向导,按它给出的建议做吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询