這是sql 就兩表關聯 查詢時間要1分鐘
SELECT * FROM opc_diag_service_h h
INNER JOIN opc_diag_service_d d ON d.diag_service_h_id = h.id
執行計劃
-----------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost | Time |
-----------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 24349752 | 7962368904 | 523937 | 01:44:48 |
| * 1 | HASH JOIN | | 24349752 | 7962368904 | 523937 | 01:44:48 |
| 2 | TABLE ACCESS FULL | OPC_DIAG_SERVICE_H | 10731641 | 1684867637 | 65240 | 00:13:03 |
| 3 | TABLE ACCESS FULL | OPC_DIAG_SERVICE_D | 24349752 | 4139457840 | 163130 | 00:32:38 |
-----------------------------------------------------------------------------------------------
從執行計劃看好像是權標掃描
h表的索引

d表的索引
uj5u.com熱心網友回復:
收集下統計資訊看看uj5u.com熱心網友回復:
統計資訊是啥。 兩表關聯的資料量一共2500萬 count(*)要2分鐘, 我在另一個庫同樣的count(*)陳述句 4700萬的資料 只要1分20秒 , 另一個庫是TABLE ACCESS STORAGE FULL
uj5u.com熱心網友回復:
統計資訊是啥呀uj5u.com熱心網友回復:
你的陳述句都沒有帶where條件,這樣有索引也不會走啊,因為走全表掃描cost更低。uj5u.com熱心網友回復:
你可以試試通過hint強制使用索引,查詢時間應該會更長SELECT /*+ index(table IndexName)*/
uj5u.com熱心網友回復:
兩張大表做關聯查詢時,大概的規律是這樣的:如果關聯列都有索引,會走 MJ ,沒有索引會走 HJ,也就是現在你這個情況。
再者,這個查詢沒有 where 條件,幾乎 百分之百不走索引。
樓主先百度一下 : NL、MJ、HJ 這幾個詞。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/256473.html
標籤:開發
下一篇:sql執行計劃決議
