cds.RecordCount存在問題嗎?cds.RecordCount存在問題
我通常用它來確定在查詢中是否有任何記錄。
但是在和一所大學談話時,他告訴我這會有一個表現的懲罰!
我做了一些測試,沒有發現任何主要問題。
那麼是否存在性能損失或RecordCount的其他問題?
如果是這樣,檢查查詢中是否有一些記錄的最佳方法是什麼?
感謝
cds.RecordCount存在問題嗎?cds.RecordCount存在問題
我通常用它來確定在查詢中是否有任何記錄。
但是在和一所大學談話時,他告訴我這會有一個表現的懲罰!
我做了一些測試,沒有發現任何主要問題。
那麼是否存在性能損失或RecordCount的其他問題?
如果是這樣,檢查查詢中是否有一些記錄的最佳方法是什麼?
感謝
如果你使用的TClientdataSet(如您的「CDS」似乎暗示)與PacketRecords
設置爲-1
(默認)或FetchOnDemand
設置爲False
沒有區別,因爲在客戶端數據集接收並加載所有數據一次存入內存。 與其他數據集不同的是,在您前進光標時按需提取數據,使用RecordCount
將首先獲取所有數據。在這種情況下,最好在打開後使用數據集的EOF
屬性 - 如果您只想知道結果集是否爲空。
最好的解決方案是執行SELECT COUNT(*)
查詢。
如果您需要本地所有記錄,則應將FetchOnDemand
屬性設置爲False
,或者您可以在cds.RecordCount
之前調用cds.Last
。
還有一個cds.IsEmpty
方法,如果目的是檢查數據集中是否含有記錄...
'TClientDataSet'還支持本地緩存和取需求。 – 2011-04-07 11:54:12
@Jørn謝謝,當禁止按需提取時,我添加了關於PacketRecords = -1的註釋。不確定本地緩存是什麼意思,或者它是如何與問題相關的。 – 2011-04-07 12:17:30
RecordCount方法將顯示本地緩存記錄IIRC的數量。它不會首先獲取所有記錄。儘管這可能在不同的TDataSet後代中以不同的方式實現。 – 2011-04-07 12:36:14