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
华梦行 阅读(214)
评论(0) 编辑 收藏