我想創建一個臨時表,以便能夠將它加入到幾個表中,因爲將這些表與建議的臨時表的內容連接需要很多時間(獲取臨時表的內容非常耗時。反覆重複需要越來越多的時間)。當我的需求完成時,我正在放下臨時桌子。 我想知道這些臨時表是否會在其他客戶端會話中可見(我的要求是僅使它們對當前客戶端會話可見)。我正在使用postgresql。如果你能提出更好的解決方案,我想這很好。postgresql中的臨時表是否在所有客戶端會話中都可見?
回答
請認真閱讀the documentation。
臨時表只在當前會話中可見,並在數據庫會話結束時自動刪除。
如果您指定ON COMMIT
,臨時表將在當前事務結束時自動刪除。
如果您需要在臨時表上使用良好的表統計信息,則必須顯式調用ANALYZE
,因爲這些統計信息不會自動收集。
感謝您的反應Launrenz.Actually我很困惑,這些會議真的指的是什麼。這些數據庫會話或客戶端會話是否因爲數據庫會話可以跨越多個客戶端會話,並且如果該表對於每個客戶端(而不是數據庫客戶端)的整個數據庫會話都是可見的,那麼這對我來說並不好。 –
這是一個數據庫會話。如果您使用某種連接池,則必須在完成後顯式刪除臨時表,或者在單個事務中完成您的工作,並在臨時表中使用「ON COMMIT」。 –
PostgreSQL然後是你的數據庫。臨時表比標準做得更好。來自the docs,
儘管CREATE TEMPORARY TABLE的語法類似於SQL標準的語法,但效果並不相同。在標準中,臨時表只定義一次,並在需要它們的每個會話中自動存在(以空內容開始)。 PostgreSQL改爲要求每個會話爲要使用的每個臨時表發出自己的CREATE TEMPORARY TABLE命令。這允許不同的會話使用相同的臨時表名稱用於不同的目的,而標準的方法限制給定的臨時表名稱的所有實例具有相同的表結構。
感謝Evan的迴應。實際上,我對這些會話真正引用的內容感到困惑。自從數據庫會話可以跨越多個客戶端會話並且如果該表對於每個客戶端的整個數據庫會話都是可見的,那麼這些數據庫會話或客戶端會話不是數據庫客戶端),它對我來說並不好。 –
沒有客戶端會話的概念。只有數據庫會話。如果*你的客戶端正在建立連接,這* *實際上可能會成爲問題。這是你考慮的事情。數據庫無法查看* your *客戶端會話的概念。 –
- 1. Azure中的會話:客戶端會話可能嗎?
- 2. 客戶端會話
- 3. 在SOAP客戶端中實現會話
- 4. JSF - Richfaces - 如何知道會話是否超時(客戶端上)
- 5. 會話服務器端或客戶端(可否訪問)?
- 6. 在postgresql表中存儲具有區域的客戶端datimetime
- 7. HttpContext.Current.Cache是否可用於所有會話
- 8. Boto3客戶端會話中Kivy應用
- 9. 松鼠sql客戶端會話超時
- 10. 客戶端處理會話超時
- 11. 客戶端處理會話超時
- 12. gwt客戶端會話超時
- 13. Flask客戶端會話
- 14. Toplink客戶端會話
- 15. JMX客戶端會話
- 16. 計數器框,可見所有客戶
- 17. 函數中是否有臨時表?
- 18. 如何在asp.net中超時客戶端會話
- 19. 在TopLink中獲取客戶端會話時出錯
- 20. 使動態表在所有頁面中都可見
- 21. 客戶端和服務器是否知道在WCF服務調用中有某種可訪問的「會話ID」?
- 22. 檢查約束 - 表中的所有行,對於每個客戶端<= 100%(PostgreSQL)
- 23. 「References」屬性在客戶端不可見
- 24. 在Java中,遠程對象是否也可以是客戶端?
- 25. 是否有可能使客戶端與HTML5的客戶端連接
- 26. 上傳臨時註冊表(C#)時,客戶端不具備所需的特權
- 27. 是否所有的marketo用戶都可以訪問最新的(2_9)SOAP端點?
- 28. 是否所有會話變量都通過HTTP發送?
- 29. 如果cookie在客戶端被禁用,會話是否會工作?
- 30. 是否有可能爲Android創建一個「客戶端到客戶端」系統?
你有兩個很好的答案,但也要記住,在postgresql中臨時表是非常非常少用的。總是有更好的方法 – e4c5
您能否提出建議我可以採取哪些其他方法?我嘗試使用CTE,但CTE中的數據沒有存儲,因此它們不會提高性能(在某些情況下,就像我的一樣,它們可以表現惡化)。 –
如果您遇到性能問題,請閱讀[postgresql-performance](http://stackoverflow.com/tags/postgresql-performance/info),然後提出一個新問題,其中包含標記info –