SQL效能調教中,調整T-SQL指令是最容易的方法,以下幾點為T-SQL注意項目

 

1.不要對資料欄位作運算

我們先將CreateID與name都有設定索引

下好兩種查詢產品名稱與建立者的作法

SELECT[id]
,[name]
FROM [Product]
WHERE [CreateID]='8888' AND [name]='雙端子四面倒角成型插針機'

相關數據:子樹成本0.0131,索引搜尋

 

以字串相加方式搜尋

SELECT
[id]
,[name]
FROM [Product]
WHERE [CreateID]+','+[name]='8888,雙端子四面倒角成型插針機'

相關數據:子樹成本0.0153,索引掃描

由上數據可知因為必須所有資料的欄位相加後才知道符不符合,所以無法直接使用索引,必須使用叢集索引掃描

2.少用負向查詢

盡量少用NOT.!=.<>.!<.>!之類的語法,這類與法條件是不要甚麼資料但是其他都要,所以這類語法無法非常有效的使用二分搜尋法

SELECT
[id]
,[name]
FROM [Product]
where [name]<>'八軸全自動繞線機'


3.盡量少在where使用函數

使用此類函數後SQL Server 需要將所有相關欄位分別傳入函式中,所效能一定不好,盡量少用

SELECT[name]
FROM [Product]
where convert(varchar(10),amount)='1500' AND  convert(varchar(10),amount)='1000'

 

4.小心使用or

基本上取資料時當然是範圍越小越好,而or語法不是一個有效可縮小範圍的語法

5.JOIN語法

當需要使用Join語法,盡量先縮小範圍再Join,通常單純兩個資料表Join不太會影響效能,但是三以上的資料表Join,甚至還有更多複雜的運算,這是要特別注意,先縮小資料量在做Join

 

6.快速取得前幾筆

option(fast n)為快速取得暫存的前n比

SELECT[id]
,[name]
FROM [Product]
option(fast 1000)

7.分頁新語法

在SQL Server 2012有個新的分頁語法,使用方法如下

select ....from table

order by ...

OFFSET @startNum ROWS FETCH NEXT @n ROWS ONLY

@startNum:起始值

@n:一頁筆數

這是取得5筆後的前5筆資料的範例,也可以解讀成一頁5筆的第二頁資料

select * from Product

order by id

OFFSET 5 ROWS FETCH NEXT 5 ROWS ONLY

基本上越新的語法效能通常會越好

 

arrow
arrow
    創作者介紹
    創作者 Art Chen 的頭像
    Art Chen

    以最謙卑的眼看世界

    Art Chen 發表在 痞客邦 留言(0) 人氣()