使用ASP開發專案時遇到的連線資料庫的效能問題。

2021-04-12 19:46:35 字數 1527 閱讀 4766

原有乙個專案,使用asp開發,使用oracle資料庫 。 使用下面的**來獲取查詢語句。

setrs =

server.createobject(

"adodb.recordset")

rs.open 所要執行的sql語句, 資料庫連線

邏輯中存在乙個兩級的結構,在對父級資料進行迴圈的時候查詢到每一條父級資料所包含的子級資料集合。

strsql ="

查詢父級資料的sql語句

"rs.open 所要執行的sql語句, 資料庫連線

dountil rs.eof

strsql2 ="

查詢子級資料的sql語句

"rs2.open 所要執行的sql語句, 資料庫連線

rs2.close

rs.movenext

loop

rs.close

但是從oracle資料庫轉到sql server資料庫以後,邏輯沒有變化但是時間卻有了很大的變化。從原來的幾秒變成了五十多秒,感覺是兩個recordset的巢狀迴圈導致。解決方法是使用乙個陣列來儲存父級資料,然後執行rs.close,再迴圈陣列來查詢子級資料。

自己並不是很清楚其中的原因,請大家多多指點。謝謝。

--> 1. 重新定義資料庫連線也是可以在混亂的**中提高效能(如果實在沒有辦法的話, :) )。 

--> 2. 盡量不要通過sql語句來查詢,而要使用儲存過程、自定義函式等資料庫自帶方法來提高效能。

--> 3. 查詢資料庫主要有兩種方法

第一種,

setrs =

server.createobject(

"adodb.recordset")

rs.open strsql, dbconnection

rs.close

setrs 

=nothing

dbconnection.close

setdbconnection 

=nothing

第二種,

setcmdsp 

=server.createobject(

"adodb.command")

cmdsp.activeconnection 

=dbconnection

cmdsp.commandtext ="

dbo.spname

"cmdsp.commandtype 

=adcmdspstoredproc

setadors 

=cmdsp.execute

adors.close

setadors 

=nothing

setcmdsp 

=nothing

dbconnection.close

setdbconnection 

=nothing

第二種方法功能比較強,可以呼叫儲存過程來進行查詢。但是一定要注意將所有用到的connection和command都釋放掉。如果command沒有釋放掉的話,那麼下次建立command並且使用相同的dbconnection就會出錯。

飛機大戰專案 使用pycharm時遇到的問題

今日想練習下飛機大戰的專案.在ubuntu系統上安裝了乙個pycharm.file settings editor font 即可調節字型大小 file settings 選擇專案projects project interpreter 選擇已存在的python直譯器 的安裝路徑 是因為預設了vim...

部署專案時遇到的問題

測試nltk解析樹視覺化時,遇到 tclerror couldn t connect to display 0.0 按照網上答案使用xhost 又報錯xhost unable to open display 以為是許可權問題找伺服器管理員來輸入,還是一樣的報錯 然後,檢視了一下環境變數發現沒有 di...

使用ToluaFrameWork時遇到的一些問題

最近的專案在使用tolua框架熱更新。在做初期準備時,拿著github上的toluaframework進行學習和修改,在匯出安卓包時,遇到了一些問題,因此記錄了一下。1.plugins目錄下的x86和x86 64資料夾中的tolua要設定成不同的平台,android libs的armeabi v7a...