1.字符类型建议采用varchar/nvarchar数据类型,并且禁止使用varchar(max)、nvarchar(max)
2.金额货币建议采用money数据类型 (*)
3.自增长标识建议采用bigint数据类型 (数据量一大,用int类型就装不下,那以后改造就麻烦了)
4.时间类型建议采用为datetime数据类型
5.禁止使用text、ntext、image老的数据类型
6.每张表必须有主键,尽量使用单字段主键
7.查询度较高的,不允许使用外键,会增加表结构变更及迁移的复杂度,外键插入对性能有影响,需检查主外键约束,建议在程序中控制一致性
8.新建的表,所有字段禁止为NULL,允许为null会增加更多逻辑判断
9.索引的设计原则
1)where 后经常使用的列建索引
2)对经常用到的列创建索引
3)应该对排序的OrderBY子句创建索引
4)数据量小的表禁止创建索引
5)表索引数不超过6个
6)充分利用唯一约束
7)索引包含的字段不超过5个
8)不适合创建索引的字段:性别、0/1、TRUE/FALSE
10.sql查询注意点
-
禁止在数据库做复杂运算
-
禁止使用SELECT *
-
禁止在索引列上使用函数或计算
-
禁止使用游标
-
禁止使用触发器
-
禁止在查询里指定索引
-
变量/参数/关联字段类型必须与字段类型一致
-
参数化查询
-
限制JOIN个数
-
限制SQL语句长度及IN子句个数
-
尽量避免大事务操作
-
关闭影响的行计数信息返回
-
除非必要SELECT语句都必须加上NOLOCK
-
使用UNION ALL替换UNION
-
查询大量数据使用分页或TOP
-
递归查询层级限制
-
NOT EXISTS替代NOT IN
-
临时表与表变量
-
使用本地变量选择中庸执行计划
-
尽量避免使用OR运算符
-
增加事务异常处理机制
-
输出列使用二段式命名格式
原文:http://www.cnblogs.com/liyunhua/p/4534442.html
想法:关系型数据库不使用外键是有点奇怪,如果性能需要,是考虑不要使用外键的。