1.表名要以模塊簡稱為前綴, 如:Bse_, Crm_, Sys_, Scm_, OA_, Mrp_, Ftm_等,后面部分與字段名稱都盡量使用有意義的英文單詞,第一個字母要大寫,單詞之間直接連接,不需要連接符號;
2.每個表必須要有主鍵,而且對經常使用的字段建立索引,除了必要的字段,盡可能設置字段允許為空而且不需要缺省值;
3.主鍵規則:對于經常增刪的數據表,主鍵字段建議為varchar(36),用GUID生成,其它表原則上以性能為參考來建立主鍵,但要考慮可移植性,并發性與易初始化;主鍵本身在業務邏輯上不體現,不具有實際意義;
4.避免使用復合主鍵,只比較一個字段比比較多個字段快很多;
5.除了必要的冗余數據外,盡量避免冗余數據的出現,容易保證數據的一致性;
6.完全符合建立聚集索引要求:“既不能絕大多數都相同,又不能只有極少數相同”的規則;
7.用聚合索引比用不是聚合索引的主鍵速度快;
8.用聚合索引比用一般的主鍵作order by時速度快;
9.使用聚合索引內的字段,搜索時間會按數據占整個數據表的百分比成比例減少;
10.索引有助于提高檢索性能,但過多或不當的索引也會導致系統低效,過多的索引甚至會導致索引碎片;
11.Like條件中,通配符%在字符串的開頭使得索引無法使用;
12.OR條件,會引起全表掃描;
13.不推薦使用以下條件語句:NOT、!=、<>、!<、!>、NOT EXISTS、NOT IN、NOT LIKE;
14.IN 的作用相當與OR;
15.盡量少用NOT;
16.exists 和 in 的執行效率是一樣的;
17.用函數charindex()和前面加通配符%的LIKE執行效率一樣;
18.union在通常情況下比用or的效率要高的多,但如果or兩邊的查詢列是一樣的話,那么用union則反倒和用or的執行速度差很多;
19.字段提取要按照“需多少、提多少”的原則,避免“select *”;
20.count(*)不比count(主鍵)慢,而count(*)卻比其他任何除主鍵以外的字段匯總速度要快,而且字段越長,匯總速度就越慢;
21.order by按聚集索引列排序效率最高;
22.高效的TOP,提高性能;
23.聚集索引有兩個最大的優勢:1、以最快的速度縮小查詢范圍;2、以最快的速度進行字段排序;
24.一定要將聚集索引建立在:1、您最頻繁使用的、用以縮小查詢范圍的字段上;2、您最頻繁使用的、需要排序的字段上;
25. 由于改變一個表的內容,將會引起索引的變化。頻繁的insert,update,delete語句將導致系統花費較大的代價進行索引更新,引起整體性能的下降。一般來講,在對查詢性能的要求高于對數據維護性能要求時,應該盡量使用索引,否則,就要慎重考慮一下付出的代價;
26. 不同類型的索引效能是不一樣的,應盡可能先使用效能高的,比如:數字類型的索引查找效率高于字符串類型,定長字符串char,nchar的索引效率高于變長字符串varchar,nvarchar的索引;
27. 有嵌套查詢時,盡可能在內層過濾掉數據;
28. 多表關聯查詢時,需注意表順序,并盡可能早的過濾掉數據,只將必須的數據帶到后續的操作中去;
29. 任何對列的操作都導致全表掃描,如數據庫函數、計算表達式等,查詢時應盡可能將操作移至等號的某一邊;
30. 存儲過程如果有返回結果集的話, 就不能通過返回一個狀態值來進行邏輯判斷,否則會導致執行兩次存儲過程,影響性能;
31. Where條件中如果存在以下情況,則索引無效,嚴重影響性能: 索引列不要使用函數; 索引列不要使用NOT; 索引列不要用NULL; 不要對索引列進行計算;
大盤預測
國富論
posted on 2007-10-26 15:34
華夢行 閱讀(216)
評論(0) 編輯 收藏