Oracle 學習筆記(四)

來源:互聯網
上載者:User

標籤:高效   use   ctf   重複   ble   預存程序   個數   sql 語句   不能   

一、高效 SQL 陳述式原則

  •   在where 中用 = 關係運算時
  •  避免用函數在關係運算中,除非你使用函數建立索引
  •  盡量不要隱式轉化資料類型,資料類型一定要匹配
  •  盡量將一句SQL分成多個陳述式完成
  •  不能差分的請用UNION ALL 來組合
  •  條件確定的子查詢  Exist 適合於外表小,內表大    in  適合於外表大,內表小
  •  使用視圖的注意事項
  •  複雜視圖的串連要小心,尤其有外鍵的時候
  •  當查詢的是視圖中引用的部分表的時候,請不要使用視圖,或者建立新的更小的表
  •  儲存中間結果
  •  對查詢中可能多次調用的結果集,請儲存
  •  考慮使用物化視圖
  •  將複雜的不能最佳化的查詢分階段完成
  •  盡量減少訪問資料的次數
  •  使用 case 語句
  •  使用進階分組rollup,cube
  •  使用預存程序
  •  使用 RETURNING 子句

二、全表掃描

  •    全表掃描:將高水位線下的資料區塊都讀一遍。
  •    DB_FILE_MULTIBLOCK_READ_COUNT 參數決定掃描的速度,該參數的值乘以塊的
  •    大小應該小於作業系統的最大io
  •    因為範圍是連續的塊,所以全表掃描會連續的讀,效率很高   

三、何時會使用全表掃描

 1.表小

 2.索引缺少,條件判定列上沒有索引

 3.使用hint,強制使用全表掃描

 4.讀的資料比重大。一般超過 10%的資料要讀取就會選擇全表掃描

 5.並行查詢,和索引是對立的,兩者必須選擇一個

 四、全表掃描的最佳化
   1.回收高水位線
   2.DB_FILE_MULTIBLOCK_READ_COUNT 加大
   3.使每個塊裝的資料更多,減少 pctfree
   4.使用並行查詢
   alter system set db_file_multiblock_read_count=32;修改參數配置,預設為16 個塊
   alter table t1 pctfree 0; 將每個資料區塊都裝滿
   alter table t1 move tablespace users;  移動資料表空間

五、 資料庫查詢的最佳化,Hints
    Hints,即提示,強制該語句以我們指定的方式運行,作用範圍是當前語句,對後面語句不影響。書寫時,一定要放在第一個單詞(select) 的後面。Hints 的寫法有兩種:  /*+ 提示 */  , --+ 提示

六、SQL  查詢最佳化

1.盡量避免在一個複雜查詢裡面使用 LIKE ‘%parm1%‘     百分比符號會導致相關列的索引無法使用,最好不要用.  

    •   在前端進行下拉框的輸入搜尋
    •  在後端進行查詢範圍控制,不查詢無關資料  

2. 索引   

    •  資料量大的時候,建立索引   
    •  避免對索引進行計算操作   
    •  避免在索引列上使用 not, <>, !=   
    •  .避免在索引列上使用 is null 和 is not null   
    • 避免在索引列上使用資料類型轉換   
    •  .避免在索引列上使用函數   
    •  避免在索引列上使用空值   

3. 複雜查詢     可將複雜查詢進行拆分,分步進行  

4. 盡量使用 union all    union 會對資料進行排序,並去除重複的行,比較消耗資源    union all 則不進行排序,不去除重複的行   

5. 在where 語句中合理使用 in , not in ,exist,not exist    Exist 適合於外表小,內表大    in  適合於外表大,內表小  

6. 排序    避免使用消耗資源的操作,帶有 distinct, uinon,minus,intersect,order by 的語句    會啟動 sql 引擎,distinct  需要一次排序,而其它至少需要執行2次排序。

7. 暫存資料表    謹慎使用暫存資料表,可以極大的提高效能。   

 

Oracle 學習筆記(四)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.