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
- Oracle sql執行計劃OracleSQL
- 後臺執行SQL語句(oracle)SQLOracle
- httprunner測試框架(一):支援不同環境執行HTTP框架
- java連線oracle執行sql語句JavaOracleSQL
- spark sql語句效能最佳化及執行計劃SparkSQL
- 查詢Oracle正在執行的sql語句及執行該語句的使用者OracleSQL
- Sql語句實現不同記錄同一屬性列的差值計算SQL
- Oracle SQL Profile固定執行計劃的方法OracleSQL
- 生產環境使用10053分析Oracle的執行計劃Oracle
- Oracle資料庫SQL語句執行過程Oracle資料庫SQL
- sql語句如何執行的SQL
- Oracle執行語句跟蹤 使用sql trace實現語句追蹤OracleSQL
- 一條SQL語句在MySQL中如何執行的MySql
- oracle常用後臺程序及sql語句執行流程OracleSQL
- mysql的sql語句執行流程MySql
- SQL 語句的執行順序SQL
- Laravel記錄執行的SQL到日誌(開發環境和生產環境都用得上)LaravelSQL開發環境
- 【SQL】Oracle sql語句 minus函式執行效率與join對比SQLOracle函式
- 配置開發環境、生成環境、測試環境開發環境
- 6. Oracle開發和應用—6.3. 基本SQL語句—6.3.4. select語句OracleSQL
- SQL語句執行順序SQL
- 一條sql語句在mysql中是如何執行的MySql
- 一條 SQL 語句在 MySQL 中是如何執行的?MySql
- 專案開發中,如何使用eolinker進行環境管理:開發、測試和生產環境
- Laravel 獲取執行的sql語句LaravelSQL
- 不同的SQL語句執行時需要申請並持有對應的鎖SQL
- 怎樣在sqlite3上執行SQL語句SQLite
- webpack開發模式和生產模式設定及不同環境指令碼執行Web模式指令碼
- Oracle資料庫關於SQL的執行計劃(轉)Oracle資料庫SQL
- Oracle檢視sql_id 的歷史執行計劃OracleSQL
- sql語句執行緩慢分析SQL
- mysql執行sql語句過程MySql
- Mybatis 動態執行SQL語句MyBatisSQL
- 在oracle中跟蹤會話執行語句的幾種方法Oracle會話
- spaCy (1)安裝和測試程式碼的執行 windows環境Windows
- Oracle基本SQL語句OracleSQL
- SQL Server 查詢歷史執行的SQL語句SQLServer
- .Oracle固定執行計劃之SQL PROFILE概要檔案OracleSQL