簡體   English   中英

使用SQL Server臨時表的最佳實踐

[英]Best practice for using SQL Server Temp Tables

我有一個儀表板Web應用程序,涉及用戶登錄以查詢大量數據(MS SQL Server 2016)和查看結果圖表。 數據也經常更改(例如每小時更改一次)。 性能尤為重要。

為了提高性能,我發現可以一次創建一個臨時表來處理大量的處理,然后多次重新查詢該表(例如,按不同的字段分組)以生成不同的圖表。 當用戶首次登錄時,我可以使用此方法一次性快速為用戶預先計算很多圖表數據。 這比每次都執行整個查詢要高效得多(即對20個圖表中的每個圖表分別執行“臨時表+分組依據”)。

但是,一旦用戶登錄,便可以執行其他操作,以重新使用該臨時表數據。 理想情況下,我不想在每個后續請求中都重新創建臨時表,因此我想在客戶端登錄的整個生命周期內重新使用它。

我認為我不能使用全局表,因為每個用戶都需要一個單獨的表。 如果用戶的會話在客戶端上超時,SQL Server也將不知道何時刪除表,這可能導致大量舊臨時表和大量數據的堆積。

理想情況下,我想要一個會話臨時表,該表會在每個小時內到期,這樣客戶端可以訪問多個后續請求的數據,而不必那么頻繁地重新創建它。

我有什么選擇呢?

我建議使用臨時表快速檢索任何數據的唯一時間是最終數據。 意味着沒有人會改變它。 itu告將是一個很好的清單。 如果這樣做,則每個人最終可能會在其圖表中得到不同的數據。 人員A查詢並獲取臨時數據表並創建圖表。 人員B查詢並獲取所有新數據和修改后的數據的臨時表,並創建圖表。 人員A再次查詢,並從他們的第一個查詢中獲取原始數據,但從未看到人員B看到的內容。 我不建議這種方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM