ORACLE語句優化 上

2021-08-31 02:12:29 字數 957 閱讀 4335

1. 選擇最有效率的表名順序:

oracle的解析器按照從右到左的順序處理from子句中的表名,from子句中寫在最後的表(基礎表 driving table)將被最先處理,在from子句中包含多個表的情況下,你必須選擇記錄條數最少的表作為基礎表。如果有3個以上的表連線查詢, 那就需要選擇交叉表(intersection table)作為基礎表, 交叉表是指那個被其他表所引用的表.

2. where子句中的連線順序

oracle採用自下而上的順序解析where子句,根據這個原理,表之間的連線必須寫在其他where條件之前, 那些可以過濾掉最大數量記錄的條件必須寫在where子句的末尾.

3. select子句中避免使用 『 * 『

oracle在解析的過程中, 會將『*』 依次轉換成所有的列名, 這個工作是通過查詢資料字典完成的, 這意味著將耗費更多的時間

錯誤寫法:select * from tablename;

正確寫法:select column1,column2….from tablename;

4. 用truncate替代delete

當刪除表中的記錄時,在通常情況下, 回滾段(rollback segments ) 用來存放可以被恢復的資訊. 如果你沒有commit事務,oracle會將資料恢復到刪除之前的狀態(準確地說是恢復到執行刪除命令之前的狀況) 而當運用truncate時, 回滾段不再存放任何可被恢復的資訊.當命令執行後,資料不能被恢復.因此很少的資源被呼叫,執行時間也會很短. (truncate只在刪除全表適用,truncate是ddl不是dml)

5. 使用表的別名

當在sql語句中連線多個表時, 請使用表的別名並把別名字首於每個column上.這樣一來,就可以減少解析的時間並減少那些由column歧義引起的語法錯誤.

例子:select a.code,a.name,b.code,b.name

from table1 a,

table2 b;

Oracle優化語句

下面的例項中使用3個表 table a r1,r2,r3,r4,r5,c1,c2,b2 b r1,b1,b2 c r1,c1,c2,b2 括號中即為表中的字段。一 使用特定表中的索引。有時候乙個表中的資料量很大時候,索引是非常非常的重要,何為索引?我來舉個例子,你一聽就能明白,比如 你想搜尋我的電腦...

Oracle 語句優化

1 盡量少用in,基本上所有的in操作都可以用exists代替 2 用not exists或者外連線替代 not in,not in 不能應用索引 3 盡量不是用 amp 不等於操作符不會用到索引 2 用 2 or 2代替 4 設計表的時候把索引列設定為not null 5 盡量不把萬用字元 和 作...

oracle語句優化

1.多表查詢 選擇合適的基礎表 select from table1,table2,basetable選擇最有效率的表名順序 2.where子句中的連線順序 oracle採用自下而上的順序解析where子句。先寫表關聯後寫條件 過濾掉最大數量記錄的條件必須寫在where子句的末尾 3.計算記錄條數 ...