SQL優化策略

2021-10-03 10:43:05 字數 2222 閱讀 9758

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...