我有一個查詢,其頂部有一個子查詢的WITH語句,然後我在子查詢上運行幾個CONNECT BY。子查詢可以包含數以萬計的行,並且CONNECT BY層次結構的深度沒有限制。目前,這個查詢需要30秒以上;是否可以指定索引放在爲分解子查詢創建的臨時表上以加速CONNECT BY,或以另一種方式加速?如何在子查詢因式分解的臨時表上創建索引?
2
A
回答
2
在查詢中沒有辦法正確執行該操作:Oracle
不支持Eager Spool
。
您可以將結果集臨時存儲在索引臨時表中,並針對它發出CONNECT BY
查詢。
但是,對於查詢中不可爭辯的相等條件,CONNECT BY
通常會構建一個散列表,該表在大多數情況下甚至比索引更好。
您能否在此發佈您的查詢?
2
您可能可以將MATERIALIZE
提示與查詢子因子一起使用,以便子查詢不會迭代重新運行。雖然它沒有記錄,但它似乎可靠地將WITH子句的結果刷新到臨時表中。
Jonathan Lewis' blog有幾個如何使用它的例子。但是,由於提示的無證性質,存在一些風險。
相關問題
- 1. 如何在此臨時表上創建索引?
- 2. SAS臨時DB2表 - 創建索引
- 3. 如何在子查詢中引用臨時表?
- 4. 在臨時表列上創建索引是否唯一?
- 5. 爲什麼我無法在臨時表上創建索引?
- 6. 如何找到在磁盤上創建臨時表的SQL查詢?
- 7. 如何創建臨時表
- 8. 在查詢中創建臨時變量
- 9. 從SQL Server子查詢創建臨時表導致錯誤
- 10. 如何從動態查詢創建臨時表?
- 11. 如何使用動態查詢創建臨時表
- 12. 如何查找用於在Oracle sql developer中創建臨時表的查詢
- 13. 在創建表上創建索引
- 14. 如何在Db2中的MQT(物化查詢表)上創建索引?
- 15. 如何避免此子查詢並創建索引視圖?
- 16. 使用SELECT INTO時,是否可以在臨時表上創建索引?
- 17. 從動態查詢中的另一個臨時表創建臨時表
- 18. 使用不同的查詢和索引時間分析器創建elasticsearch索引
- 19. 沒有臨時表的子查詢
- 20. 如何在Oracle的子查詢中定義臨時表值
- 21. 動態查詢在存儲過程中創建的臨時表
- 22. 使用sqlalchemy在json鍵(表達式索引)上創建索引
- 23. 如何在子 - 子查詢引用表
- 24. 如何計算從查詢創建的臨時列的SUM
- 25. 如何創建子查詢
- 26. 如何在單引號內創建臨時表
- 27. 如何將字符串值分開,創建臨時存儲在臨時表
- 28. SQL查詢:子查詢上的自加入需要創建一個單獨的(非臨時)表?
- 29. 如何在Windows中使用sqlite查找創建的臨時表?
- 30. 如何在不創建臨時表的情況下執行MySQL查詢?
你怎麼可以添加/創建索引到你的臨時表?我正在使用這種語法,但是這是否是正確的開始? 'CREATE temp AS SELECT abc FROM def' – Gaffi 2013-04-19 20:27:23