資料庫點滴積累 查詢

2021-09-08 15:56:55 字數 460 閱讀 6764

sql server查詢

1、查詢的時候應該盡量按照復合索引中的順序來做條件查詢;

2、如果在程式中有for或者是freach,在儲存過程中又有if exist,那就要看是否可以再表中加入復合索引了,if not exists可以轉換為if exists來使用索引;

3、在查詢盡量少使用*或者全表字段來查詢。第一,返回的資料集比較大;第二,產生更多的io操作;第三,會使用到bookmarklookup的查詢計畫,效能有所下降;如果能使用覆蓋索引來查詢是最理想的。

4、下面關於查詢的效能比較

1、返回行數較多:索引覆蓋》聚集索引》表掃瞄》堆積的非聚集索引》聚集的非聚集索引

2、返回行數較少:索引覆蓋=聚集索引》堆集的非聚集索引》聚集的非聚集索引》表掃瞄

5、不要在where字句中的列名加函式;如果有對列值進行判斷的,盡量把操作符(比如+、-、*等)放到=號的右邊;

資料庫點滴積累 游標

游標 1 盡量少用游標,如果不得不用,那就要看是否可以對邏輯進行整合,分出不同的情況,讓在一部分情況是使用insert select的方式來一次性插入 注意下例中的業務分析,這個是關鍵 2 如果儲存過程花費的時間比較長,而且無法避免使用游標,那我們就要分析系統的業務,看大部分的情況是走哪條路的,那我...

資料庫點滴積累 索引

索引 1 復合索引 where a and b 如果沒有對a和a做單一索引,查詢的時間為a 如果對a做單一索引,查詢時間為b 如果對b做單一索引,查詢時間為c 如果對a,b做復合索引,查詢時間為d,那麼時間的比較就應該是a b c d 比如spmsgreader distribute中使用where...

資料庫點滴積累 游標

游標 1 盡量少用游標,如果不得不用,那就要看是否可以對邏輯進行整合,分出不同的情況,讓在一部分情況是使用insert select的方式來一次性插入 注意下例中的業務分析,這個是關鍵 2 如果儲存過程花費的時間比較長,而且無法避免使用游標,那我們就要分析系統的業務,看大部分的情況是走哪條路的,那我...