一SqlDataRead和Dataset的選擇
Sqldataread優點讀取數據非常快如果對返回的數據不需做大量處理的情況下建議使用SqlDataReader其性能要比datset好很多缺點直到數據讀完才可close掉於數據庫的連接
(SqlDataReader 讀數據是快速向前的SqlDataReader 類提供了一種讀取從 SQL Server 數據庫檢索的只進數據流的方法它使用 SQL Server 的本機網絡數據傳輸格式從數據庫連接直接讀取數據DataReader需及時顯式的close可及時的釋放對數據的連接)
Dataset是把數據讀出緩存在內存中缺點對內存的占用較高如果對返回的數據需做大量的處理用Dataset比較好些可以減少對數據庫的連接操作優點只需連接一次就可close於數據庫的連接
一般情況下讀取大量數據對返回數據不做大量處理用SqlDataReader對返回數據大量處理用datset比較合適對SqlDataReader和Dataset的選擇取決於程序功能的實現
二ExecuteNonQuery和ExecuteScalar
對數據的更新不需要返回結果集建議使用ExecuteNonQuery由於不返回結果集可省掉網絡數據傳輸它僅僅返回受影響的行數如果只需更新數據用ExecuteNonQuery性能的開銷比較小
ExecuteScalar它只返回結果集中第一行的第一列使用 ExecuteScalar 方法從數據庫中檢索單個值(例如id號)與使用 ExecuteReader 方法 返回的數據執行生成單個值所需的操作相比此操作需要的代碼較少
只需更新數據用ExecuteNonQuery單個值的查詢使用ExecuteScalar數據綁定的選擇
三數據的綁定DataBinder
一般的綁定方法用DataBindereval 綁定不必關心數據來源(Dataread或dataset)不必關心數據的類型eval會把這個數據對象轉換為一個字符串在底層綁定做了很多工作使用了反射性能正因為使用方便了但卻影響了數據性能來看下當於dataset綁定時DataItem其實式一個DataRowView(如果綁定的是一個數據讀取器(dataread)它就是一個IdataRecord)因此直接轉換成DataRowView的話將會給性能帶來很大提升
對數據的綁定建議使用數據量大的時候可提高幾百倍的速度使用時注意方面需在頁面添加注意字段名的大小寫(要特別注意)如果和查詢的不一致在某些情況下會導致比還要慢如果想進一步提高速度可采用的方法不過其可讀性不高
以上的是vbnet的寫法在c#中<@% ((DataRowView)ContainerDataItem)[字段名] %>
對查看頁面每個執行過程狀態最簡單的辦法其頁面的trace屬性為true就可查看細節
一使用存儲過程
性能方面存儲過程提供了許多標准sql語言中所沒有的高級特性其傳遞參數和執行邏輯表達式的功能有助於應用程序設計者處理復雜任務另外存儲過程存儲在本地服務器上減少了執行該過程所需的網絡傳輸寬帶和執行時間(存儲過程已經對sql語句進行了預編譯所以其執行速度比在程序裡執行sql語句快很多)
程序結構方面從程序的可擴展性看使用存儲過程會對程序以後的修改帶來方便比如數據庫的結構改變了只需修改相對應的存儲結構和程序中的調用部分即可這部分不屬於本文探討范圍屬於程序結構設計方面所以不在此展開
程序安全性使用存儲過程可避免SQL Injection攻擊
[] [] []
From:http://tw.wingwit.com/Article/program/net/201311/14966.html