Query
針對先前 SQL 查詢結果的 SQL 查詢
是否有一個 SQL 數據庫(用於 C#)允許我查詢磁碟上的數據庫,然後(可能在客戶端離線)使用 SQL 查詢記憶體中的結果集?
我基本上希望始終能夠對來自先前 SQL 查詢的任何內容進行 SQL 查詢,無論是在磁碟上還是在記憶體中。
我說的只是 CRUD 查詢。
謝謝!
背景:
這將用於在執行時針對以前的查詢結果進行一般的即席客戶端查詢,它也適用於記憶體目的,但這不是這裡的主要關注點。是的,我需要 SQL 或 TSQL。
在您看來,為此目的將 DataSet(s) 保存到記憶體數據庫(例如嵌入式 SQL Server)中的性能成本是多少?
我覺得 LINQ 是最好的方法,但如果你想在數據庫和記憶體數據表上使用 TSQL,你可以試試這個記憶體 SQL 引擎。
您是否正在檢查記錄在您讀取後是否已更改,以免覆蓋另一個事務的數據?在這種情況下,您可能想查看實現樂觀並發的各種其他方法。. 執行此操作的正常方法是使用 SQL Server 在記錄上設置一個時間戳列,在讀取時記錄時間戳,然後在寫入時檢查它。
您可以生成健壯的查詢,這些查詢不會意外覆蓋更改的記錄,方法是使用 SQL 片段對時間戳進行相等檢查,例如:
update Foo set col1 = @col1 ,col2 = @col2 where FooID = @FooID and time_stamp = @timestamp -- captured when the record was read, -- this clause ensures a dirty record -- is never overwritten. select @rec_ct = @@rowcount if @rec_ct == 0 then [concurrency error condition] . . .
這永遠不會覆蓋自您閱讀以來已更改的髒記錄。檢查
@@rowcount
允許您檢測寫入是否成功。