1. 數據庫結構優化
a. 比如一(yī)些标志(zhì)信息是否認證之類的字段要建索引卻沒有建
b. 表沒有設主鍵,加上主鍵
c. 外(wài)鍵一(yī)般都要加上索引
2. 程序優化
a. 當隻限取前面N條記錄時,不要用 select * ,然後再用ADO分(fēn)頁
改爲 select top N 字段列表 這樣的語句會高效很多
b. 統計記錄數時不要用 select * from .... 這樣的語句,改
用 select count(1) from .... 這樣會好很多
c. 盡量避免使用 select * from table 這樣的sql語句,這樣會導緻程序從數據庫裏讀取太多無用的數據,一(yī)般來說應該使用
select 字段1,字段2 from table 這種形式,隻從數據庫裏讀取必要的數據,這樣能大(dà)大(dà)提高程序讀取數據庫的效率
d. 不要用嵌套查詢,比如
<%
sql = "select col1,col2 from a"
set rs = server.createobject("adodb.recordset")
rs.open sql,conn,1,1
while not rs.eof
sql2 = "select col1,col2 from b where id=" & rs("id")
set rs2 = server.createobject("adodb.recordset")
rs2.open sql2,conn,1,1 '這裏用了嵌套查詢,效率會下(xià)降很多,如果數據庫的時候根本沒法運行
while not rs2.eof
response.write rs("id") & "=" & rs2("name")
rs2.movenext
wend
rs.movenext
wend
%>
如果改爲
<%
sql = "select a.id ,b.name from a left join b on b.id=a.id" '使用連表操作,并用具體(tǐ)的字段名代替 *,程序是高效很多
set rs = server.createobject("adodb.recordset")
rs.open sql,conn,1,1
while not rs.eof
response.write rs("id") & "=" & rs("name")
rs.movenext
wend
%>
3. 如果網站的訪問量大(dà)并且數據庫查詢操作的任務比較重,要考慮采用自動生(shēng)成靜态頁面然後定時自動更新的技術
4. 對于 access 數據庫:
access 數據是一(yī)個桌面型的數據庫系統,它隻能應付一(yī)些數據量少且訪問量不大(dà)的網站,如果access的數據庫超過
100M 以上,性能會急速下(xià)降,并且 access 數據庫的數據庫驅動程序隻能應付同時15個進程共享,也就是說它多隻能
允許15個人同時打開(kāi)它,對于大(dà)訪問量的網站來說這是很低的一(yī)個數值,所以一(yī)般訪問量大(dà)或者是數據量大(dà)的網站一(yī)般
要采用 sqlserver 或者 mysql 等高性能的數據庫服務器平台。
有很多人使用 access 數據庫時并沒有對數據庫的結構進行優化,這也是造成網站程序效率低下(xià)的另一(yī)個重要