Oracle 同一sql語句在測試和開發環境不同的執行計劃
昨天下班前收到開發的郵件,一個執行sql語句執行的很慢,看了執行計劃,為未走索引。
收到郵件後,登入到開發環境devdb,執行語句,果真很慢。登入到測試環境uatdb,執行同樣的語句,速度很快。
開發和測試的為同一份生產資料匯入過來的(都是我做的資料同步),檢視了下兩邊的執行計劃,測試的走了索引,開發的未走。此時比較納悶,為什麼一樣的語句會走不同的執行計劃。
1. 檢視兩邊的索引情況,兩邊的的索引都一樣。
select * from dba_indexes where table_name='tabname'
2. 檢視兩邊的統計資訊情況,發現開發環境的統計資訊有過更新,測試環境沒有。 找到了不一樣的地方~~
select table_name,num_rows,a.blocks,a.last_analyzed from dba_tables a where a.table_name='tabname';
3. 在開發環境想辦法匯入以前的統計資訊,但是經過查詢沒有歷史統計資訊,此路不通。
4. 經過嘗試,最後刪除了開發環境的統計資訊,發現開始走索引了,執行速度變快。
SQL>dbms_stats.delete_table_stats(ownname => 'xxxxx',tabname => 'tabname') ;
5. 在網上找到了一篇比較好的文章。
http://blog.itpub.net/26892340/viewspace-721935/
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/21374452/viewspace-2129358/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle 對比sql語句執行環境OracleSQL
- 清除SQL語句的執行計劃SQL
- 通過分析SQL語句的執行計劃優化SQL語句SQL優化
- Oracle環境下SQL語句的不同寫法效率對比OracleSQL
- 獲取oracle sql語句詳細些執行計劃OracleSQL
- httprunner測試框架(一):支援不同環境執行HTTP框架
- oracle 11g 基數反饋造成同一sql執行產生不同的執行計劃OracleSQL
- 獲取oracle正在處於等待狀態的sql語句的執行計劃的語句OracleSQL
- 根據SQL Id獲得SQL語句的執行計劃SQL
- 一條SQL語句的執行計劃變化探究SQL
- 獲得目標SQL語句執行計劃的方法SQL
- 查詢Oracle正在執行和執行過的SQL語句OracleSQL
- 同一個語句在plsql的sql視窗可以執行命令視窗不能執行SQL
- 通過分析SQL語句的執行計劃優化SQL 二SQL優化
- ORACLE 11G 使用SPM來調整SQL語句的執行計劃OracleSQL
- oracle查詢語句執行計劃中的表消除Oracle
- 通過分析SQL語句的執行計劃優化SQL(總結)SQL優化
- Oracle sql執行計劃OracleSQL
- Oracle SQL 語句的執行過程OracleSQL
- 如何在oracle10g上檢視sql的執行計劃(不實際執行語句)OracleSQL
- 後臺執行SQL語句(oracle)SQLOracle
- Oracle SQL語句執行步驟OracleSQL
- oracle 中如何顯示sql語句的執行時間和sql語句的執行後的當前時間OracleSQL
- 配置開發環境、生成環境、測試環境開發環境
- 透過分析SQL語句的執行計劃最佳化SQL(總結)SQL
- 查詢Oracle正在執行的SQL語句OracleSQL
- 理解oracle執行sql語句的過程OracleSQL
- 在事務中執行sql語句SQL
- 在nhibernate中執行SQL語句SQL
- Sql語句實現不同記錄同一屬性列的差值計算SQL
- [轉]透過分析SQL語句的執行計劃最佳化SQL(總結)SQL
- 查詢Oracle正在執行的sql語句及執行該語句的使用者OracleSQL
- 使用dbms_xplan包來獲得sql語句的執行計劃SQL
- Oracle中檢視已執行sql的執行計劃OracleSQL
- Oracle 檢視SQL的執行計劃OracleSQL
- 生產環境使用10053分析Oracle的執行計劃Oracle
- YCSB擴充套件-語句執行頻率,執行指定的測試查詢語句套件
- 使用 EXPLAIN PLAN 獲取SQL語句執行計劃 (R0.1)AISQL