Oracle数据库使用Analyze提升sql性能
?
Oracle數據庫使用Analyze提升sql性能
?
????? 如果你不使用analyze完成sql優化,將意味著:你拒絕使用數據庫的查詢優化器,也失去了使用優化連接的機會。假設你創建了一張擁有100萬條記錄的臨時表,如果不對其進行分析,那么優化器將無法從現有的線索中獲取表中真正的內容,于是它只能決定使用嵌套循環連接來一行行地掃描數據表,隨著數據集的增長,你的數據庫性能會越來越差。
?
?? ORACLE數據庫的PL/SQL語句執行的優化器,有基于代價的優化器(CBO)和基于規則的優化器(RBO)。
???RBO的優化方式,依賴于一套嚴格的語法規則,只要按照規則寫出的語句,不管數據表和索引的內容是否發生變化,不會影響PL/SQL語句的"執行計劃"。
CBO自ORACLE7版被引入,ORACLE自7版以來采用的許多新技術都是只基于CBO的,如星型連接排列查詢,哈希連接查詢,反向索引,索引表,分區表和并行查詢等。CBO計算各種可能"執行計劃"的"代價",即cost,從中選用cost最低的方案,作為實際運行方案。各"執行計劃"的cost的計算根據,依賴于數據表中數據的統計分布,ORACLE數據庫本身對該統計分布是不清楚的,須要分析表和相關的索引,才能搜集到CBO所需的數據。要想使用好CBO,使SQL語句發揮最大效能,必須保證統計數據的及時性。
?
? ? 統計信息的生成可以有完全計算法和抽樣估算法。SQL例句如下:
?? 完全計算法:analyze table abc compute statistics;
??? 抽樣估算法(抽樣20%): analyze table abc estimate statistics sample 20percent;
?
??? 可以通過定時任務方式,定時通過analyze命令完成數據庫中相應表內容的分析處理。
?
?
?
轉載于:https://www.cnblogs.com/widget90/p/9678884.html
總結
以上是生活随笔為你收集整理的Oracle数据库使用Analyze提升sql性能的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数学建模:1.概述 监督学习--回归分析
- 下一篇: 【mysql】配置 选项文件