Oracle查詢語句優化總結

2021-08-22 10:16:10 字數 1126 閱讀 7583

建立表的時候。應盡量建立主鍵,盡量根據實際需要調整資料表的pctfree和pctused引數;大資料表刪除,用truncate table代替delete。

合理使用索引,在oltp應用中一張表的索引不要太多。資料重複量大的列不要建立二叉樹索引,可以採用位圖索引;組合索引的列順序盡量與查詢條件列順序保持一致;對於資料操作頻繁的表,索引需要定期重建,以減少失效的索引和碎片。

查詢語句全部大寫。

使用表的別名,如此能夠減少表字段的輸入錯誤,而且多表聯查時避免相同欄位的歧義。 如select * from vehicle t where t.hpzl='02'

where 後的條件執行時是從後往前,因此能夠篩選更多資料的條件排在後面。

查詢盡量用確定的列名,少用*號。比如:select count(key)from tab where key> 0效能優於select count(*)from tab;

將or換為in。 比如 select * from vehicle where syxz in ('r','o')效能優於select * from vehicle where syxz='r' or syxz='o'

將》,《替換為》=,<=;

避免對欄位使用函式等操作。比如:使用select * from vehicle where ccdjrq=to_date('2019-1-1','yyyy-mm-dd')而不是         select * from vehicle where to_char(ccdjrq,'yyyy-mm-dd')='2019-1-1'

盡量少巢狀子查詢,這種查詢會消耗大量的cpu資源;對於有比較多or運算的查詢,建議分成多個查詢,用union all聯結起來;多表查詢的查詢語句中,選擇最有效率的表名順序。oracle解析器對錶解析從右到左,所以記錄少的表放在右邊。

清空表時使用truncate table ***x; 而不是delete。(注意:truncate操作不可恢復!)

盡量多用commit語句提交事務,可以及時釋放資源、解鎖、釋放日誌空間、減少管理花費;在頻繁的、效能要求比較高的資料操作中,盡量避免遠端訪問,如資料庫鏈等,訪問頻繁的表可以常駐記憶體:alter table...cache;

在oracle中動態執行sql,盡量用execute方式,不用dbms_sql包。

參考部落格:

ORACLE 查詢語句總結

oracle查詢語句這塊有多表查詢和子查詢 那麼首先我們先來了解下多表查詢,顧名思義多表查詢就是通過多張表去查詢資料,既然是多表查詢那麼就有了多表鏈結這一說法,那麼多表鏈結有以下這幾種寫法,等值連線 不等值連線 自連線 滿外連線和外鏈結還有乙個自然連線 那麼外鏈結又分為 左外連線和右外連線 1 下面...

oracle 查詢語句總結

查詢某字段為某個值的記錄 select from sales where type 皮夾子 模糊查詢 select from sys users where name like 吳 去重查詢 select distinct type name,table name from menutab 查詢前1...

Oracle 查詢優化器 改寫查詢語句

start 當我們執行一條查詢語句的時候,我們只告訴 oracle 我們想要哪些資料,至於資料在 怎麼找,那是查詢優化器的事情,優化器需要改寫查詢語句,決定訪問路徑 如 全表掃瞄,快速全索引掃瞄,索引掃瞄 決定表聯接順序等。至於選擇哪種方式,優化器需要根據資料字典做出判斷。那優化器如何改寫查詢語句呢...