SQL Server效能優化(6)查詢語句建議

2022-01-12 21:26:55 字數 2096 閱讀 7068

1. 如果對資料不是工業級的訪問(允許髒讀),在select裡新增 with(nolock)

select

top10

idfrom measure_heat with (nolock)

2. 限制結果集的資料量,如使用top 100等來限制返回的行數。實在不行,在資料庫內分頁。

3. 查詢時不要返回不需要的行、列,即不要用select *, 而是用 select 欄位名。

4. 注意union和union all 的區別:union all好。

5. 避免使用: like  『%關鍵字%』

6. 避免在字段上使用函式:如 upper(「字段」)=值 改成 字段=upper(『值』) 或者

where

datediff(day, 日期,'

2005-11-30

')>0應改為:where 日期 <

'2005-11-30『。

放在前面會每一行執行一次。

7. 盡量少用」or」關鍵字,而是用union語句代替。參考:

8. 用exists來代替in語句。參考:

9. 盡量少用檢視,它的效率低。特別的是不要用檢視巢狀

10. 沒有必要時不要用distinct和order by,這些動作可以改在客戶端執行。它們增加了額外的開銷。

11. 如果在 where 子句中使用引數,也會導致全表掃瞄。

select id from t where num=

@num

可以改為強制查詢使用索引:

select id from t with(index(索引名)) where

num=

@num

12. 慎用游標

13. 不要在子查詢中使用count()求和執行存在性檢查

--

不要使用。當你使用count()時,sql server不知道你要做的是存在性檢查,它會計算所有匹配的值,要麼會執行全表掃瞄,要麼會掃瞄最小的非聚集索引;

select column_list from

table

where

0< ( select

count ( * ) from table2 where

..)--

使用。當你使用exists時,sql server知道你要執行存在性檢查,當它發現第乙個匹配的值時,就會返回true,並停止查詢。類似的應用還有使用in或any代替count()。

select column_list from

table

where

exists ( select

*from table2 where ...)

14. 避免使用count(*)獲得表的記錄數

--

這條語句會執行全表掃瞄才能獲得行數。

select

count ( * ) from

dbo.orders

--但下面的sql語句不會執行全表掃瞄一樣可以獲得行數:

select rows from sysindexes where id =

object_id ( '

dbo.orders

' ) and indid <

2

15. 避免使用動態sql,類似如下:動態sql難以除錯和故障診斷,有注入風險,並且查詢計畫只能在執行時才知道where條件的內容,不利於其使用最優化的執行計畫。

declare @i int

select name from

user

where id =

@i

16. 不要在你的儲存過程,觸發器,函式和批處理中重複呼叫函式,例如,在許多時候,你需要獲得字串變數的長度,無論如何都不要重複呼叫len函式,只呼叫一次即可,將結果儲存在乙個變數中,以後就可以直接使用了

17. 有關觸發器,最好不要使用觸發器;如果能夠使用約束實現的,盡量不要使用觸發器;不要在觸發器中使用事務型**。

參考:a.

b. c. sql server效能優化綜述

效能優化 找到SQL SERVER中的書籤查詢

我們在建立索引的時候,對於調節篩選列是大家都能夠注意到的。但是對於包含列檢查會被忽略。從而導致大量的lookup 也就是書籤查詢。那麼我如何才能找出某個表是不是執行了書籤查詢,執行了多少次書籤查詢呢?好訊息是,sql server 有各種各樣的動態管理檢視,其中 sys.dm db index op...

SQL Server效能優化

一 分析階段 一般來說,在系統分析階段往往有太多需要關注的地方,系統各種功能性 可用性 可靠性 安全性需求往往吸引了我們大部分的注意力,但是,我們必須注意,效能是很重要的非功能性需求,必須根據系統的特點確定其實時性需求 響應時間的需求 硬體的配置等。最好能有各種需求的量化的指標。另一方面,在分析階段...

SQL Server 效能優化

伺服器效能優化 1.建立效能基線 2.建立監視 3.分析監視結果 1.windows工具 perfmon,tskmgr,eventmon,netmon 2.sql server 工具 事件探查器 查詢優化顧問 sql 管理器 log執行計畫 活動監視 各種report tsql 效能優化 1.目標 ...