oracle 語句編寫注意問題(初學者)

2021-06-04 16:59:32 字數 1172 閱讀 5316

列索引(快) ——》全域性索引 (慢)

劣質sql及修改 :1> where 子句中使用了 is null | is not null

(oracle不允許使用索引)

2> where 子句前置萬用字元不能使用索引,降低查詢速度

3> order by 子句使用表示式

4> not 使用單一的not 或 column <> parameter 不能使用索引

應替換成 column<='parameter' or column>=parameter    就可以使用當前字段索引

5> exists 相比於in的效率高 (遍歷主表,主表通過關聯子表的列名的值過濾資訊)

同樣not exists 比not in 的效率高

6> from 後查詢兩個表的時候 , 資料少的作為基礎表 ,即 from tab1 tab2 base_tabs

後查詢3個表的時候,選擇交叉表作為基礎(被其他表引用的表,即關聯其他兩張表的)  

7> where 子句連線順序 自上而下 所以最大資料量條件的應至於where句末

8> * 避免在select後面使用*,oracle會查資料字典獲取所有列名

9> 減少訪問資料庫次數      盡量使用decode函式方法 (相當於一條if)  

decode可以結合order by 和group by 使用

10> 刪除重覆記錄方法

delete from emp e where e.rowid >(select min(x.rowid) from rmp x where x.emp_no = e.emp_no)

11> 多使用commit釋放資源

12> 計算記錄條數,count(index) > count(*) > count(1) 無顯著速度差異

13> 減少對錶的查詢 (a,b)= (select a1,b1 from emp)

14> 使用別名減少解析時間

15> 採用表連線 效率高於 exists

16> 使用in和union all替換or

17> where後 order by 大資料範圍滯後,小資料範圍在前。

18> 索引只能確定存在於表中

19> ||連線字串也將不實用索引

20> 優化group by 在執行此命令之前,將不需要的記錄過濾掉

21> 表空間和索引至於不同的硬碟上

初折騰Oracle問題小記四

今天打算讓 8國語言版本部落格 支援下oracle,於是,就又產生了一堆問題及總結 1 如何從mssql中調取表構造到oracle,關於這個,我用上了資料匯出功能,遇到以下問題 解決 把記住密碼打勾。靠 太陽。b 表資料型別問題 預設nvarchar n 語句寫成 nvarchar2型別,需要增加字...

初折騰Oracle問題小記四

今天打算讓 8國語言版本部落格 支援下oracle,於是,就又產生了一堆問題及總結 1 如何從mssql中調取表構造到oracle,關於這個,我用上了資料匯出功能,遇到以下問題 a 在測試資料庫鏈結時,有個 記住密碼 太陽,我一開始沒打勾,測試鏈結成功,可是下一步就提示出錯。解決 把記住密碼打勾。靠...

app編寫時注意的問題

1.判斷是否處於登入狀態,可通過判斷本機記憶體中的登入標誌完成。2.某些ajax訪問,可放在單獨的js檔案中。二 登入 index頁面判斷登入,如沒登入,採用mui.preload載入登入頁面。var webview mui.preload login頁面按下登入鍵後,要對登入名和密碼是否為空進行檢...