Oracle sql的基本優化寫法和思路。

2022-07-11 01:45:10 字數 1376 閱讀 2401

首先簡單介紹下常規的sql優化的方式:

1.肯定有人說建索引啊。

2.資料量實在太大,建分割槽啊。

3.其實基於目前公司的業務還有一種辦法那就是向上聚集表。根據查詢業務,專門抽取上來一張表,直接做到select就好。

4.其實還可以把錶細分,然後通過應用控制根據不同條件查詢不同表

其實,我覺著以上這些思路的前提是sql寫法不能在優化了,不過一般情況下sql優化下 換個寫法我覺著能解決最起碼50%的查詢慢的問題。

下面開始介紹日常開發寫sql需要注意的地方

1.得學會看執行計畫。

什麼是執行計畫,執行計畫我覺著就是oracle決定如何來執行你的sql的乙個過程記錄,這個東西是會被快取的,前提是你的sql跟快取起來的一模一樣

plsql裡面f5就可以看執行計畫了。p

執行計畫的執行順序是 縮排最多最先執行,同樣縮排從上往下。

主要看幾點就好了,是不是全表掃瞄,走沒走索引,基數(就是返回結果集) 耗費(就是這個過程要多久)

2.寫sql一些簡單的規範

寫sql盡量都大寫,還有寫表的別名,然後選擇欄位都是寫別名.欄位名 ,別用select * 

3.like走索引不?

like 'abc%' 走索引    like '%abd%'不走索引

4.學會使用exists

可以使用exists代替in ,not exists 代替 not in

5.不要對索引列進行計算導致索引失效,也不要讓他自動轉型

6. is null 和 is not null 不走索引

7. 復合索引,是有順序的, 如果你只用了其中乙個非第乙個 那是沒用的

8.order by 走不走索引?

走索引,但是有兩個限定:

(1)order by中所有的列必須包含在相同的索引中並保持在索引中的排列順序。 

(2)order by中所有的列必須定義為非空

9.使用》=  代替 >

10.不走索引的其他情況

(1)'!='不走索引。索引只能告訴我們什麼存在於表中, 而不能告訴你什麼不在表中。

(2)'||'是字元連線函式。就象其他函式那樣, 停用了索引。

(3)'+'是數學函式。和其他數學函式一樣, 停用了索引。

(4)相同的索引列不能互相比較,這將會啟用全表掃瞄。

還有很多優化的地方...只能在工作中慢慢學習。。。

Oracle Sql優化筆記

基本的sql編寫注意事項 需要注意的是,隨著oracle的公升級,查詢優化器會自動對sql語句進行優化,某些限制可能在新版本的oracle下不再是問題。尤其是採用cbo cost based optimization,基於代價的優化方式 時。我們可以總結一下可能引起全表掃瞄的操作 oracle優化器...

Oracle Sql優化筆記

基本的sql 編寫注意事項 需要注意的是,隨著oracle的公升級,查詢優化器會自 動對sql語句 進行優化,某些限制可能在新版本的oracle下不再是問題。尤其是採用 cbo cost based optimization 基於代價的 優化方式 時。我們可以 總結一下可能引起全表 掃瞄的操作 or...

Oracle Sql優化筆記

基本的sql編寫注意事項 需要注意的是,隨著oracle的公升級,查詢優化器會自動對sql語句進行優化,某些限制可能在新版本的oracle下不再是問題。尤其是採用cbo cost based optimization,基於代價的優化方式 時。我們可以總結一下可能引起全表掃瞄的操作 oracle優化器...