sql server使用的注意点及优化点 自备

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 

想法:关系型数据库不使用外键是有点奇怪,如果性能需要,是考虑不要使用外键的。

原文地址:https://www.cnblogs.com/songjl/p/7567078.html