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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

设计高效sql一般经验谈

發布時間:2024/6/5 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 设计高效sql一般经验谈 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1不用在sql語句使用系統默認的保留關鍵字

2盡量用exists not exists 代替 in not in

???????? 這條在sql2005之后,在索引一樣,統計信息一樣的情況下,exists in效果是一樣的。

???????? AdventureWorks數據庫為例,查詢在HumanResources.EmployeeAddress有地址的Employee信息,

in 語句如下:

SET STATISTICS IO ON

?

SELECT * FROM HumanResources.Employee

WHERE EmployeeID IN (SELECT EmployeeID FROM HumanResources.EmployeeAddress ea)

?

SET STATISTICS IO OFF

執行后,消息如下:

?

(290 行受影響)

'EmployeeAddress'。掃描計數1,邏輯讀取4 次,物理讀取0 次,預讀0 次,lob 邏輯讀取0 次,lob 物理讀取0 次,lob 預讀0 次。

'Employee'。掃描計數1,邏輯讀取9 次,物理讀取0 次,預讀0 次,lob 邏輯讀取0 次,lob 物理讀取0 次,lob 預讀0 次。

執行計劃如圖

?

exists ,語句如下,

?

SET STATISTICS IO ON

SELECT * FROM HumanResources.Employee

WHERE EXISTS(SELECT EmployeeID FROM?HumanResources.EmployeeAddress ea

???????????? WHERE

?????????? HumanResources.Employee.EmployeeID=ea.EmployeeID)

??????????

?

SET STATISTICS IO OFF

執行后,消息如下:

?

(290 行受影響)

'EmployeeAddress'。掃描計數1,邏輯讀取4 次,物理讀取0 次,預讀0 次,lob 邏輯讀取0 次,lob 物理讀取0 次,lob 預讀0 次。

'Employee'。掃描計數1,邏輯讀取9 次,物理讀取0 次,預讀0 次,lob 邏輯讀取0 次,lob 物理讀取0 次,lob 預讀0 次。

執行計劃如圖:

?

3盡量不用select * from …..,而要寫字段名 select field1,field2,…

???????? 這條沒什么好說的,主要是按需查詢,不要返回不必要的列和行。

?

4sql 查詢中應盡量使用索引列來加快查詢速度

5任何在Order by 語句的非索引項或者有計算表達式都將降低查詢速度

6任何在where子句中使用is null is not null 的語句不允許使用索引,效率較低

7通配符%在詞首時,系統不使用索引,當通配符出現在其他位置時,優化器就能利用索引

????????

8在海量數據的sql查詢語句中盡量少用格式轉換

9任何對列的操作都將導致表掃描,它包括數據庫函數、計算表達式等,查詢時要盡可能將操作移至等號右邊

10 In or子句常會使索引失效

11通常情況下,連接比子查詢效率要高

?

轉載于:https://www.cnblogs.com/kevinlzf/archive/2009/10/28/1591212.html

總結

以上是生活随笔為你收集整理的设计高效sql一般经验谈的全部內容,希望文章能夠幫你解決所遇到的問題。

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