一次HASH JION過慢優化(2)
可以看到進行了笛卡爾集,再HASH JION的時候使用了過多的臨時表空間用於儲存HASH值,達到了2.6M。
而笛卡爾集是test1和test2做的。其實我們是有連線條件的,連線條件是
filter("A"."test"="B"."test" AND "A"."test1" I
OR "A"."test2"="B"."test3")
但是優化器沒有這樣使用,而是先做了笛卡爾集然後再做了HASH JION然後把連線條件做為了過濾條件。
所以解決問題的關鍵在於讓優化器先做連線條件再HASH JION。
所以我改寫了以上片段如下:
其實就是用use_concat提示來告訴執行計劃用UNION ALL的方式來代替OR
(
USE_CONCAT
The USE_CONCAT hint forces combined OR conditions in the WHERE clause of a query to be transformed into a compound query using the UNION ALL set operator. Generally, this transformation occurs only if the cost of the query using the concatenations is cheaper than the cost without them.
The USE_CONCAT hint disables IN-list processing and OR-expands all disjunctions, including IN-lists.
)
最後修改完的語句如下,這個語句執行時間不到3秒。
SELECT *
FROM (SELECT row_.*, rownum rownum_
FROM (select *
from (select /*+ use_concat */ a.payrefdate,
..................
union all
..............
union all
............)
WHERE rownum_ > 0;
現在非常快了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7728585/viewspace-686879/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 一次HASH JION過慢優化(1)優化
- 對Hash Join的一次優化優化
- 由一次 UPDATE 過慢 SQL 優化而總結出的經驗SQL優化
- 慢Sql優化思路SQL優化
- 一次效能優化調整過程.優化
- 為什麼所有的查詢條件都命中索引還是那麼慢?記一次慢查詢優化過程索引優化
- 一次HASH JOIN 臨時表空間不足的分析和優化思路優化
- MySQL 慢查詢優化MySql優化
- MySQL慢日誌優化MySql優化
- 一次內鏈子查詢優化 2優化
- NOT IN 一次優化優化
- 一次優化優化
- Mysql慢SQL分析及優化MySql優化
- 排查Mysql突然變慢的一次過程MySql
- consistent hash 原理,優化及實現優化
- sql server中的hash應用優化SQLServer優化
- 分享工作中一次優化程式的過程優化
- mysql效能優化-慢查詢分析、優化索引和配置MySql優化索引
- 慢SQL優化實戰筆記SQL優化筆記
- Mysql 慢查詢優化實踐MySql優化
- 一次sqlldr匯入慢的解決過程SQL
- 《MySQL慢查詢優化》之SQL語句及索引優化MySql優化索引
- 通過重啟資料庫,完成了一次優化資料庫優化
- EntityFramework優化:第一次啟動優化Framework優化
- 過早引用“過早優化是萬惡之源”是所有緩慢軟體的根源 - JakeWharton優化
- 一次vue-cli 2.x專案打包優化經歷(優化xlsx外掛)Vue優化
- MySQL索引原理及慢查詢優化MySql索引優化
- 記一次UITableView優化UIView優化
- 記一次sql優化SQL優化
- 一次通過DB_LINK抽取資料過慢原因分析
- 除錯與優化:一次資料中心看板 T+1 改 T+0 優化過程除錯優化
- HTTP/1.1 有點慢,我想優化下!HTTP優化
- 記一次開啟資料庫慢原因分析過程資料庫
- 記一次SQL調優過程SQL
- 一次 Flutter WebView 效能優化FlutterWebView優化
- ? 記一次前端效能優化前端優化
- 記一次分頁優化優化
- 記錄一次打包優化優化