5
A
回答
1
我寧願在臨時表上執行自加入而不是派生表。
CREATE TEMPORARY TABLE foo AS SELECT ...;
SELECT ... FROM foo f1 JOIN foo f2 ON ...conditions...;
與使用派生的表,在那裏你必須兩次寫整個查詢:
SELECT ...
FROM (SELECT ...)
JOIN (SELECT ...) ON ...conditions...;
但另一種解決方案是使用公用表表達式這是源自表稍有不同:
WITH foo AS (SELECT ...)
SELECT ... FROM foo f1 JOIN foo f2 ON ...conditions...;
假設您使用支持此語法的數據庫品牌(Microsoft,Oracle,IBM,PostgreSQL)。
1
範圍可能是一個。我認爲臨時表可以被其他事務/過程等訪問。派生表僅限於聲明它們的塊。
1
如果你有訪問數據的臨時表中多個查詢它可能是成本更低,以避免重複產生的臨時數據:
CREATE TEMPORARY TABLE foo AS SELECT ...;
SELECT ... FROM foo WHERE ...conditions...;
-- sometime later
SELECT ... FROM foo WHERE ...different conditions...;
相關問題
- 1. 什麼時候適合使用雙向關聯,什麼時候不適用?
- 2. 什麼時候使用IoC合適?
- 3. 什麼時候合適?
- 4. 什麼時候適合(真)回合?
- 5. 什麼時候適合使用不變文化?
- 6. 什麼時候不適合使用SQL索引
- 7. 什麼時候工廠適合?
- 8. 什麼時候適合導入包?
- 9. 什麼時候DownloadManager更適合HttpUrlConnection?
- 10. 什麼時候MVC模式合適?
- 11. 什麼時候單元測試合適?
- 12. 什麼時候應該使用AWS,什麼時候不使用
- 13. intn_t什麼時候使用它,什麼時候不使用
- 14. 什麼時候使用ByteString,什麼時候不使用?
- 15. 什麼時候使用適配器和什麼時候使用inflater
- 16. 什麼時候應該使用async/await,什麼時候不用?
- 17. 什麼時候返回空集合,什麼時候不是?
- 18. 什麼時候適合使用手風琴?
- 19. 什麼時候適合使用泛型與繼承?
- 20. 什麼時候適合使用'new'關鍵字?
- 21. 什麼時候適合使用一個數據庫,在Python
- 22. 什麼時候適合在Rails 2.1中使用Time#utc?
- 23. Android:什麼時候使用FragmentTransaction.remove是否合適?
- 24. 什麼時候適合使用HTTP 412錯誤進行響應?
- 25. 什麼時候Unix命令rmdir適合使用?
- 26. 什麼時候適合使用不同的類而不是不同的對象?
- 27. 什麼時候守衛表情適當?
- 28. SQL Server CASE什麼時候不使用CASE什麼時候
- 29. ZF2什麼時候使用getServiceLocator()什麼時候不到
- 30. 什麼時候使用GWT,什麼時候不需要
那[問題被標記爲SQL Server](HTTP ://stackoverflow.com/questions/2326395/which-one-have-better-performance-derived-tables-or-temporary-tables),所以信息應該被視爲特定於它而不是所有數據庫。 – 2010-06-30 16:19:47