1. 程式人生 > >Oracle sql 優化:增加order by 慢 去掉之後就變快 解決辦法

Oracle sql 優化:增加order by 慢 去掉之後就變快 解決辦法

一 問題背景:

1.oracle的版本的為11g

2.資料是由生產庫匯入部分資料至開發庫

3.表為範圍分割槽表

4.order by 的欄位為分割槽表的分割槽欄位

5.資料記錄大概有一千萬;

5.使用的分析工具為toad10

二 問題描述

1.加上order by的執行計劃:


2.去掉order by的執行計劃:


三問題分析

   步驟1:表order by的欄位,是否有索引

ps:經檢查,索引正常,開啟索引監控,索引會被使用;

  步驟2:是否收集過統計資訊;

ps:由於是新匯入的資料,可能未收集統計資訊,重新收集統計,但是很奇怪,分析的統計資訊的時間戳,不會更新(正常會更新);

分析前:


分析後:


  步驟3:由於有時間範圍作為分割槽的欄位,通過增加範圍條件,縮小查詢的範圍

ps:可能最直接的原因是這個,最後讓業務系統,在開啟頁面的時候,初始化一個時間段,問題解決,執行計劃如下:


相關推薦

Oracle sql 優化增加order by 去掉之後 解決辦法

一 問題背景: 1.oracle的版本的為11g 2.資料是由生產庫匯入部分資料至開發庫 3.表為範圍分割槽表 4.order by 的欄位為分割槽表的分割槽欄位 5.資料記錄大概有一千萬; 5.使用的分析工具為toad10 二 問題描述 1.加上order by的執行計劃

SQL優化一文說清Oracle Hint的正確使用姿勢

之間 高效 rect 感知 需要 nes ora 返回 變換 一、提示(Hint)概述 1、為什麽引入Hint? Hint是Oracle數據庫中很有特色的一個功能,是很多DBA優化中經常采用的一個手段。那為什麽Oracle會考慮引入優化器呢?基於代價的優化器是很聰明的,在絕

宜信-運維-資料庫|SQL優化一篇文章說清楚Oracle Hint的正確使用姿勢

一、提示(Hint)概述 1、為什麼引入Hint? Hint是Oracle資料庫中很有特色的一個功能,是很多DBA優化中經常採用的

記一次神奇的sql查詢經歷,group by查詢優化

一、問題背景 現網出現慢查詢,在500萬數量級的情況下,單表查詢速度在30多秒,需要對sql進行優化,sql如下: 我在測試環境構造了500萬條資料,模擬了這個慢查詢。 簡單來說,就是查詢一定條件下,都有哪些使用者的。很簡單的sql,可以看到,查詢耗時為37秒。 說一下app_account欄位

SQL學習之使用order by 依照指定順序排序或自己定義順序排序

使用 auto acc font data- anything 優化 建立 exec 我們通常須要依據客戶需求對於查詢出來的結果給客戶提供自己定義的排序方式,那麽我們通常sql須要實現方式都有哪些,參考很多其它資料總結例如以下(不完好的和錯誤望大家指出): 一、假

Oracle sql優化必知——表的訪問

oracle優化 sql優化基礎 訪問表 《訪問數據的方法》訪問表中的數據有兩種:1、直接訪問表 2、先訪問索引,再回表1、直接訪問表的兩種方法:①、全表掃描 全表掃描是指Oracle在訪問目標表的數據時,會從該表所占用的第一個區(extent)的第一個塊(block)開始掃描,一直掃

oracle數據庫訪問order by不起作用分析

ise oracle post 數據 clas 作用 log url cnblogs Oracle中的rownum與Order By之間的關系 Oracle.ManagedDataAccess.dll 驅動返回結果正確 微軟驅動返回結果不正確,原因未知oracle數據

SQL語句嵌套 order by 無效

esc order by sql code 序號 clas 基礎 top des selec * from (select top 20 * from (select top 100 * from Concentrator order by 序號 asc) order b

Oracle SQL 優化規則

也不會 區域 alias v$sql nullable 如果 數據段 和數 不出 一、問題的提出  在應用系統開發初期,由於開發數據庫數據比較少,對於查詢SQL語句,復雜視圖的的編寫等體會不出SQL語句各種寫法的性能優劣,但是如果將應用 系統提交實際應用後,隨著數據庫中數據

sql優化with as 作 union all的子查詢 來避免多次掃描表

語法: 1.結構: with 別名 as ( 公共sql片段 ) 2.CTE(公共表示式)後面必須直接緊跟使用CTE的SQL語句,否則失效; 如: 1) with cr as (select CountryRegionCode from person.CountryR

oracle優化一用group by或exists優化distinct

今天mentor給了一個sql語句優化的任務。(環境是sql developer)有一個語句執行很慢,查詢出來的結果有17544條記錄,但需970秒,速度很慢。語句是這樣的: SELECT DISTINCT 'AMEND_NEW', r

SQL學習之使用order by 按照指定順序排序或自定義順序排序

我們通常需要根據客戶需求對於查詢出來的結果給客戶提供自定義的排序方式,那麼我們通常sql需要實現方式都有哪些,參考更多資料總結如下(不完善的和錯誤望大家指出): 一、如果我們只是對於在某個程式中的應用

Oracle SQL優化初解

   SQL這個語言發現越寫是發現是越有意思,比如說公司有大牛能把跑快一天的報表優化到半個小時,能把一分鐘的報表優化到1秒,都感覺自己用的是假的SQL。當然雖然這些大牛沒有太多共事,但是也學習到許多SQL知識。    設計資料庫,需要的是3大正規化  1.無重複列,2.依

oracle優化一中用group by優化distinct

今天mentor給了一個sql語句優化的任務。(環境是sql developer)有一個語句執行很慢,查詢出來的結果有17544條記錄,但需970秒,速度很慢。語句是這樣的:SELECT DISTINCT 'AMEND_NEW', rep

Oracle使用row_number() over (partition order by)和DISTINCT去除重複記錄

            最近做的一個模組涉及到8張表的聯合查詢,由於這8張表中有很多主從表的關聯,結果在使用模糊查詢的時候查詢結果集出現了重複記錄。如下:                      

SQL優化基本概念(索引調優、統計資訊、查詢調整、資源調控)

 1、索引碎片 /*======================================================= 注意:所有的引數都是以當前資料庫來計算的,所以必須指定完全限定。 模式影響如何收集碎片資料: LIMITED:掃描堆所有的頁,對於索引,

Oracle SQL優化必要的全表掃描思路分析

大多數情況下,我們需要避免SQL在查詢時進行全表掃描(FTS),但是對於必須需要進行全表掃描的情況,也可以進行一些優化處理。 即使全表掃描是檢索所需資料的唯一可行方法,仍然有多種方法來提升查詢效能。優化掃描的技術包括: 1、  通過讓表變小來減少掃描所需的邏輯塊讀取的數量

spark sql優化小表大表關聯優化 & union替換or & broadcast join

----原語句(執行18min)    SELECT            bb.ip    FROM            (                    SELECT                            ip                 

Oracle SQL 優化精萃

-- Start Oracle 索引 -- 宣告:轉載請註明出處 -- Last edited on 2015-08-28 -- Created by ShangBo on 2015-06-29 -- End

MySQL SQL優化礙手礙腳的索引

該篇是SQL優化的第4篇。這裡主要表達我的一個觀點是:不該存在的索引就該幹掉,留著礙事在2014-3-12 15:39:01 -- 15:55:00這段時間內,在某個業務系統我們發現2個問題:1. 資料