您好,登錄后才能下訂單哦!
本篇內容主要講解“ADO分頁技巧有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“ADO分頁技巧有哪些”吧!
大家都說:原來的ADO分頁方法中的游標效率低下,而且容易引起鎖,甚至導致死機。我想問:這個游標到底是存在于客戶端、WEB服務器還是數據庫?他們是不是一回事?是否根據ADO可以讓他們都存在游標?到底哪種的游標最不好?
還有一個問題:
我好不容易找到了一個TOP 結合max的分頁方法,但今天我發現,我搜索我的1000萬的數據庫得到25萬條數據,甚至包括like搜索,但用最原始的ADO方法,發現速度也非常的快啊!!比TOP等方法慢不到哪里去啊?為什么這么快呢?
在某一時刻只有一個DataReader能夠打開。。在ADO分頁中,如果你打開一個連接并請求兩個使用只向前的只讀游標的記錄集,ADO隱性地為游標的生命周期的數據存儲打開第個不在連接池中的連接,接著隱性地關閉它。在ADO.NET中,如果你想在同一個數據存儲上同時打開兩個DataReader,你必須明確地建立兩個連接,每個DataReader一個。通過這種方法ADO.NET給了你對連接池使用的更多控制。
默認情況下,DataReader在每個Read方法中把整個行載入內存中。這允許你隨機訪問當前行的任意列。如果隨機訪問是不必要的,為了提高性能,把CommandBehavior.SequentialAccess傳遞給ExecuteReader調用。這改變了DataReader的默認行為,只在需要時才把數據載入內存。ADO分頁注意CommandBehavior.SequentialAccess要求你按次序訪問返回的列。ADO分頁也就是,一旦你讀過了返回的某個列,就不能再次讀取它的值了。
如果你結束了從DataReader中讀取數據,但是仍然有大量的未讀取的結果等待,那么調用Command的Cancel比調用DataReader 的Close好。調用DataReader 的Close引起它檢索等待的結果并且先清空流后關閉游標。調用Command的 Cancel刪除服務器上的結果,因此當DataReader關閉時,它不需要再讀取結果。ADO分頁如果你從Command返回輸出參數,則調用Cancel刪除它們。如果你要讀取任何輸出參數,不要調用Command 的Cancel;***調用DataReader的 Close。
當使用DataReader檢索二進制大對象時,必須給ExecuteReader方法調用傳遞CommandBehavior.SequentialAccess。因為DataReader的默認行為是在每個Read中把整行載入內存中,但是由于BLOB可能很大,結果可能是一個BLOB對象使用大量的內存。SequentialAccess把DataReader的行為設置為只載入必要的數據,ADO分頁接著你能使用GetBytes或者GetChars控制每次載入多少數據。
記住使用SequentialAccess時,ADO分頁你不能無序地訪問DataReader返回的不同字段。也就是說,如果查詢返回三個列,第三個是BLOB,并且你希望訪問前兩個列的數據,你必須先訪問***個列,接著在訪問BLOB數據前訪問第二個列。這是因為現在數據是按次序返回的,在DataReader讀過它后不能再次訪問。
到此,相信大家對“ADO分頁技巧有哪些”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。