資料庫的SQL優化

2021-09-20 01:07:29 字數 1624 閱讀 8819

1.對查詢進行優化,要盡量避免全表掃瞄,首先應考慮在 where 及 order by 涉及的列上建立索引。

(因為在條件查詢條件新增索引,會直接被檢索到列,會非常的快速)

2.應盡量避免在 where 子句中對字段進行 null 值判斷,否則將導致引擎放棄使用索引而進行全表掃瞄

(最好不要給資料庫留null,盡可能的使用 not null填充資料庫.)

例如:1 select id from t where num is null

可以在num上設定預設值0,確保表中num列沒有null值,然後這樣查詢:

1 select id from t where num = 0

3.不要使用

1 sleect * from name

(這個絕對的全部的查詢,千萬不要剩力氣去用)

4.應盡量避免在 where 子句中使用 != 或 <> 操作符,否則將引擎放棄使用索引而進行全表掃瞄。

1 select id from name where id>5

5.應盡量避免在 where 子句中使用 or 來連線條件,如果乙個欄位有索引,乙個字段沒有索引,將導致引擎放棄使用索引而進行全表掃瞄,如:

1 select id from t where num=10 or name = 'admin'

可以這樣查詢:

1 select id from t where num = 10 2

union all

3 select id from t where name = 'admin

6:in或者not in 也慎用 如:

1 select id from student where id in(select id from aa)

很多時候用exists 代替 in 是乙個好的選擇:

如 : 1 select id from student where id exists(select id from aa)

7:like模糊查詢也會導致全盤掃瞄 如:

1 select id from student where name like '%kk%'

8:應避免對where語句的表示式操作 如:

1 select id from student where id=8/2

9:update 語句,如果只更改1、2個字段,不要update全部字段,否則頻繁呼叫會引起明顯的效能消耗,同時帶來大量日誌。

10:對於多張大資料量的表join,要先分頁再join。

11:select count(*) from table;這樣不帶任何條件的count會引起全表掃瞄,並且沒有任何業務意義,是一定要杜絕的。

12:索引並不是越多越好,應正確使用索引,經常進行修改的列不適合做索引。

13:盡可能的使用 varchar/nvarchar 代替 char/nchar ,因為首先變長字段儲存空間小,可以節省儲存空間,其次對於查詢來說,在乙個相對較小的字段內搜尋效率顯然要高些;

14:盡量避免大事務操作,提高系統併發能力。

總結:對於sql的優化最怕的就是避免全盤掃瞄,重要的事說三遍,對於sql的優化最怕的就是避免全盤掃瞄,對於sql的優化最怕的就是避免全盤掃瞄,對於sql的優化最怕的就是避免全盤掃瞄,杜絕***********;

sql優化,資料庫優化

1.sql的執行順序 from 表名 where 條件 執行順序是從後往前,where條件後面的語句盡可能縮短where 資料執行的範圍。先group by 後order by select 查詢 2.避免過多的聯查,設計合理的表關係 3.遵守常見sql規範,盡可能減少 4.如果表字段過多,經常展示...

sql優化 資料庫優化

資料庫優化 資料庫優化吧我覺應該從硬碟 記憶體和網路頻寬考慮,提高硬碟的讀寫速度,增大頻寬提高吞吐量,增大伺服器記憶體,可以採用讀寫分離,降低單台資料庫的訪問壓力,查詢的時候控制資料量的大小,返回更少資料,減少互動次數,減少cpu及記憶體的開銷,sql優化 如果乙個表中資料量過大我們可以採用橫切割,...

資料庫優化 SQL優化

前面一篇文章從例項的角度進行資料庫優化,通過配置一些引數讓資料庫效能達到最優。但是一些 不好 的sql也會導致資料庫查詢變慢,影響業務流程。本文從sql角度進行資料庫優化,提公升sql執行效率。判斷sql是否有問題時可以通過兩個表象進行判斷 可以使用sar命令,top命令檢視當前系統狀態。也可以通過...