日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MSSql性能优化

發布時間:2023/12/18 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MSSql性能优化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、參數化sql ? ??????? 對于一般簡單查詢,數據庫能自動參數啊以重用計劃緩存,如: ?

?

SELECT * FROM table WHERE id=1; ?

?

SELECT * FROM table WHERE id=4 ?

? ? ???? 在sqlserver內部能自動參數化這個查詢,SELECT * FROM table WHERE id=@1 ? ???? 但是一旦sql語句中帶有join、union、top……等關鍵字,sqlserver內部將不會自動參數化。 ? ???? 在sql2005中,通過alter database XXX set paramenterization forced的強制參數化命令能夠將所有sql中的常量參數化,但是強制參數化會因為常量類型不一致造成查詢結果誤差。 ? 2、使用查詢中的索引有效 ? ?? a)、單列索引使用原則 ? ? ? ???? 單列索引能響應大部分的簡單比較,包括等價和不等價。對于like操作無前置通配符也是有效的。如: ?

?

能有效使用索引的條件語句:

?

[col1]=1 [col1]>100 [col1] between 0 and 100 [col1] like 'abc%'

?

下列條件語句不會有效利用索引:

ABS([col1])=1[col1]+1>100 [col1]+10 between 0 and 100 [col1] like '%abc%'?

? ? ?? b)、避免在WHERE字句中對字段進行函數或表達式操作 ? ? ? ???? 看一下下面效率低下的例子和其解決方法 ?

效率低下的寫法:

?

SELECT???? * FROM? Production.Product WHERE SafetystockLevel/2=100 ?

高效寫法:

?

SELECT???? * FROM? Production.Product WHERE SafetystockLevel=2*100 ?

? ? ???? 下面是SQLServer2005的優化報告 ? ? ????? 類似的例子: ?

效率低下的寫法 ? 高效的寫法

?

SELECT???? * FROM? Production.Product WHERE SubString(name,1,3)=’abc’ ?

SELECT???? * FROM? Production.Product WHERE name like ’abc%’ ?

?

SELECT???? * FROM? Production.Product WHERE datediff(day ,modifiedDate,’2005-11-30’)=0 ?

SELECT???? * FROM? Production.Product WHERE modifiedDate>=’2005-11-30’ andmodifiedDate<’2005-12-1’ ?

? ? ? ? ????? 任何對列的操作都將導致表掃描,它包括數據庫函數、計算表達式等等,查詢時要盡可能將操作移至等號右邊。 ? ????? 避免使用!=或<>、is null 或is not null、 in、not in等這樣的操作符,因為這會是系統無法使用索引,而只能直接搜索表中數據。 ? ????? 例如: ? ????? select id from employee where id!=’B%’ ? ????? 優化器將無法通過索引來確定將要命中的行數,因此需要搜索該表的所有行。 ? ?? c)、多列索引使用原則 ? ???? 則應考慮列的順序。用于等于(=)、大于(>)、小于(<)或between搜索條件的where 字句或者參與聯接的列應該放在最前面。其它列應該基于其非重要級別進行排序,就是說,從最不重復的列到最重復的列。 ? ???? 例如: ? ???? 如果表中存在索引定義為LastName、FirstName,則該索引在搜索條件為where LastName=’Smith’或where LastName=Smith and FirstName like ’j%’時將很有用。不過,查詢優化器不會將此索引用于基于FirstName(where FirstName=’Jane’)而搜索的查詢。

該文章轉載自無憂考網:http://www.51test.net

轉載于:https://www.cnblogs.com/oisiv/archive/2013/01/22/2871888.html

總結

以上是生活随笔為你收集整理的MSSql性能优化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。