1. 給where、group by 條件欄位加索引
select t.a, t.b, t.c from t where t.e = 0 group by t.f
2. 避免使用 select * from
示例:
select * from table t;
select t.a, t.b, t.c from table t;
3. 使用 where exists 替代 in
示例:
select t.a, t.b, t.c from table t where t.id in (1,2,3,4,5);
select t.a, t.b, t.c from table t where t.id exists (
select t.id from table2 t2 where t2.name = "一年級一班"
);
4. 使用 union 替代 or
示例:
select t.a, t.b, t.c from table t where t.name = "張三" and t.age = 20 or t.phone = 110;
select t.a, t.b, t.c from table t where t.name = "張三" and t.age = 20
union
select t.a, t.b, t.c from table t2 where t2.name = "張三" and t.phone = 110
5. 使用 like li% 替代 like %li%
示例:
select t.a, t.b, t.c from table t where t.name like %傑%;
select t.a, t.b, t.c from t where t.name like 傑%;
6. 避免使用 null 判斷,例如:is null 或者 is not null
示例:
select t.a, t.b from table t where t.c is null;
設定t.c 字段預設值為 : 0;
select t.a, t.b, t.c from table t where t.c = 0;
7. 避免where 左側使用函式和表示式
示例:
select t.a, t.b, t.c from table t where t.number / 10 > 5;
select t.a, t.b, t.c from table t where t.number > 5 * 10;
8. 避免使用where 1=1 ,使用where 標籤替換
示例:
select t.a, t.b, t.c from table t
and t.state = #
select t.a, t.b, t.c from table t
where 1 = 1
and t.state = #
9. 表字段能設定用數字型別替代字元型別
10. 減少資料庫訪問次數,用批量執行減少訪問數量
11. sql語句用大寫,oracle是將sql轉大寫後執行
12. 關聯查詢時資料較少的表放在資料較多表的右邊
13. 涉及多列無主鍵時,count(1) 效能優於 count(*)
14. 避免使用多資料使用游標遍歷,建議改寫sql
15. 避免返回大批量資料到客戶端,建議使用後台分頁
16.合理使用資料庫索引:
新增索引可以提高select效率,但是同時也會降低update和insert 效率。因為涉及資料新增和修改會重新建立索引。
17.使用varchar型別替代char型別
char型別占用儲存空間大於varchar型別,使用相對較小的字段查詢效率較高。
18. 避免在重複資料較多的列新增索引,可能會造成索引失效
19.避免大事務操作,提高併發效能
20.全表資料刪除使用 truncate 替代 delete
SQL優化策略
下面是再河北優化時候採用的sql優化策略,按照該策略可以使效能有大幅提高,如 4 where 子句中出現is null或者is not null時,oracle會停止使用索引而執行全表掃瞄。可以考慮在設計表時,對索引列設定為notnull。這樣就可以用其他操作來取代判斷null的操作。5 當萬用字元...
SQL 優化策略
1 sql語句盡量用大寫的 因為oracle總是先解析sql語句,把小寫的字母轉換成大寫的再執行。2 使用表的別名 當在sql語句中連線多個表時,盡量使用表的別名並把別名字首於每個列上。這樣一來,就可以減少解析的時間並減少那些由列歧義引起的語法錯誤。3 選擇最有效率的表名順序 只在基於規則的優化器 ...
SQL優化策略
1 盡量少用in操作符,基本上所有的in操作符都可以用exists代替。2 不用not in操作符,可以用not exists或者外連線 外連線 判斷為空 替代。3 不用 或者 操作符。對不等於操作符的處理會造成全表掃瞄,可以用 or 代替。例如 a 0 改為 a 0 or a 0,a 改為 a 4...