我没有什么方法优化ASP的查询代码

来源:百度知道 编辑:UC知道 时间:2024/07/01 03:58:40
我这这样写这个ASP查询代码的。。可我用来查一个500M大的ASSECC 本地查都要2分钟才可以查出来太慢了。有没有办法优化下面的代码?请高手帮帮。

<%
on error resume next
set conn=server.createobject("adodb.connection")
dim abc
abc=Request.QueryString("d1")
connstr="Provider=Microsoft.jet.oledb.4.0;data source="&server.mappath("../30_32_vip.mdb")
conn.open connstr
if err then

response.write "数据库连接出错哦。"

response.end
end if
%><div align="center">

<table cellpadding="0" cellspacing="0" width="960" height="50" border="0" bordercolor="#C0C0C0">

<tr>
<form method="GET" action="index.asp?content=<%=Request.QueryString("content")%>" >
<td height="50" bgcolor="#F2F2F2">
<p align="center">请输入内容:<input type=&qu

1 详细讲解提高数据库查询效率的实用方法
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。
2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:
select id from t where num is null
可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:
select id from t where num=0

3.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。

4.应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,如:
select id from t where num=10 or num=20
可以这样查询:
select id from t where num=10
union all
select id from t where num=20

5.in 和 not in 也要慎用,否则会导致全表扫描,如:
select id from t where num in(1,2,3)
对于连续的数值,能用 between 就不要用 in 了:
select id from t where num between 1 and 3

6.下面的查询也将导致全表扫描:
select id from t where name like '%abc%'
若要提高效率,可以考虑全文检索。

7.如果在 where 子句中使用参数,也会导致全表扫描。因为SQL只有在运行时才会解析局部变量,但优化程序不能将访问计划的选择推迟到运行时;它必须在编译时进行选择。然而,