介紹ASP.NET中SQL語(yǔ)句
數(shù)據(jù)庫(kù)的連接和關(guān)閉
訪問數(shù)據(jù)庫(kù)資源需要?jiǎng)?chuàng)建連接、打開連接和關(guān)閉連接幾個(gè)操作。這些過程需要多次與數(shù)據(jù)庫(kù)交換信息以通過身份驗(yàn)證,比較耗費(fèi)服務(wù)器資源。ASP.NET中提供了連接池(Connection Pool)改善打開和關(guān)閉數(shù)據(jù)庫(kù)對(duì)性能的影響。系統(tǒng)將用戶的數(shù)據(jù)庫(kù)連接放在連接池中,需要時(shí)取出,關(guān)閉時(shí)收回連接,等待下一次的連接請(qǐng)求。連接池的大小是有限的,如果在連接池達(dá)到***限度后仍要求創(chuàng)建連接,必然大大影響性能。因此,在建立數(shù)據(jù)庫(kù)連接后只有在真正需要操作時(shí)才打開連接,使用完畢后馬上關(guān)閉,從而盡量減少數(shù)據(jù)庫(kù)連接打開的時(shí)間,避免出現(xiàn)超出連接限制的情況。
1.使用存儲(chǔ)過程
存儲(chǔ)過程是存儲(chǔ)在服務(wù)器上的一組預(yù)編譯的SQL語(yǔ)句,類似于DOS系統(tǒng)中的批處理文件。存儲(chǔ)過程具有對(duì)數(shù)據(jù)庫(kù)立即訪問的功能,信息處理極為迅速。使用存儲(chǔ)過程可以避免對(duì)命令的多次編譯,在執(zhí)行一次后其執(zhí)行規(guī)劃就駐留在高速緩存中,以后需要時(shí)只需直接調(diào)用緩存中的二進(jìn)制代碼即可。另外,存儲(chǔ)過程在服務(wù)器端運(yùn)行,獨(dú)立于ASP.NET程序,便于修改,最重要的是它可以減少數(shù)據(jù)庫(kù)操作語(yǔ)句在網(wǎng)絡(luò)中的傳輸。
2.優(yōu)化查詢語(yǔ)句
ASP.NET中ADO連接消耗的資源相當(dāng)大,SQL語(yǔ)句運(yùn)行的時(shí)間越長(zhǎng),占用系統(tǒng)資源的時(shí)間也越長(zhǎng)。因此,盡量使用優(yōu)化過的SQL語(yǔ)句以減少執(zhí)行時(shí)間。比如,不在查詢語(yǔ)句中包含子查詢語(yǔ)句,充分利用索引等。
字符串操作性能優(yōu)化
1.使用值類型的ToString方法
在連接字符串時(shí),經(jīng)常使用"+"號(hào)直接將數(shù)字添加到字符串中。這種方法雖然簡(jiǎn)單,也可以得到正確結(jié)果,但是由于涉及到不同的數(shù)據(jù)類型,數(shù)字需要通過裝箱操作轉(zhuǎn)化為引用類型才可以添加到字符串中。但是裝箱操作對(duì)性能影響較大,因?yàn)樵谶M(jìn)行這類處理時(shí),將在托管堆中分配一個(gè)新的對(duì)象,原有的值復(fù)制到新創(chuàng)建的對(duì)象中。使用值類型的ToString方法可以避免裝箱操作,從而提高應(yīng)用程序性能。
2.運(yùn)用StringBuilder類
String類對(duì)象是不可改變的,對(duì)于String對(duì)象的重新賦值在本質(zhì)上是重新創(chuàng)建了一個(gè)String對(duì)象并將新值賦予該對(duì)象,其方法ToString 對(duì)性能的提高并非很顯著。在處理字符串時(shí),***使用StringBuilder類,其.NET 命名空間是System.Text。該類并非創(chuàng)建新的對(duì)象,而是通過Append,Remove,Insert等方法直接對(duì)字符串進(jìn)行操作,通過 ToString方法返回操作結(jié)果。
其定義及操作語(yǔ)句如下所示:
- int num;
- System.Text.StringBuilder str = new System.Text.StringBuilder(); //創(chuàng)建字符串
- str.Append(num.ToString()); //添加數(shù)值num
- Response.Write(str.ToString); //顯示操作結(jié)果
【編輯推薦】