以下是我爲scott.emp
表格所做的步驟。Oracle:導入表格統計信息後,優化程序使用動態採樣
select * from emp where empno > 7503
select * from table(dbms_xplan.display_cursor);
[..] Note ----- - dynamic statistics used: dynamic sampling (level=2)
exec DBMS_STATS.GATHER_TABLE_STATS ('scott','EMP');
select * from emp where empno > 7503.
select * from table(dbms_xplan.display_cursor);
-- No Dynamic sampling used --
導出的表統計信息。
- 清理實例並啓動新實例。
- 導入表格統計。
select NUM_ROWS,LAST_ANALYZED,GLOBAL_STATS,USER_STATS from USER_TAB_STATISTICS where table_name ='EMP';
14 28-SEP-16 YES NO
select * from emp where empno > 7503.
select * from table(dbms_xplan.display_cursor);
Note ----- - dynamic statistics used: dynamic sampling (level=2)**
爲什麼使用動態採樣,即使表有統計數據?導入統計數據後,我們是否需要觸發任何內容? 爲什麼優化程序在第一次收集統計數據(第5步)後未使用動態採樣?
什麼版本的數據庫?步驟7到底意味着什麼?你在第8步輸入了什麼統計數據?是表emp分區,你有7503分區的統計數據?你能發佈完整的執行計劃嗎? – stee1rat
7,卸載並重新安裝數據庫。在8中,我只導入了表格統計信息。沒有表是不是分區之一。感謝@stefan,我得到了DS爲什麼選擇了優化器並在答案部分中發佈了相同的原因。 – Chandan
是12c數據庫嗎?這是由12c功能「自適應執行計劃」觸發的新功能。 – ibre5041