sql性能优化 - 数据库对象优化

常见的字符类型选择

·字符类型建议采用varchar/nvarchar数据类型

·金额货币建议采用money数据类型

·科学计数建议采用numeric数据类型

·自增长标识建议采用bigint数据类型

·时间类型建议采用datetime数据类型

·禁止使用text、ntext、image老的数据类型

·禁止使用xml数据类型、varchar(max)、nvarchar(max)

 

每张表必须有主键

·每张表必须有主键,用于强制实体完整性

·单表只能有一个主键(不允许空及重复数据)

·尽量使用单字段主键

 

不允许使用外键

·外键增加了表结构变更机数据迁移的复杂性

·外键对插入,更新的性能有影响,需要检查主外键约束

·数据完整性由程序控制

 

索引设计准则

·应该对WHERE子句中经常使用的列创建索引

·应该对经常用于连接表的列创建索引

·应该对ORDER BY子句中经常使用的列创建索引

·不应该对小型的表创建索引,小型表完全表扫描可能更快

·单表索引不超过6个

·不要给选择性低的字段建单列索引,比如性别、0/1、True/False

·充分利用唯一约束

         当查询分析器通过唯一索引查找到一条记录则会立刻退出,不会继续查找索引。

·索引包含的字段不超过5个(包括include列)

         索引影响写入性能

         一个表的索引应该结合这个表相关的所有SQL综合创建,尽量合并组合索引的原则是,过滤性越好的字段越靠前

         索引过多不仅会增加编译时间,也会影响数据库选择最佳执行计划

 

日志类型的表应分区或分表

对于大的表格要进行分区,分区操作将表和索引分在多个分区,通过分区切换能够快速实现新旧分区替换,加快数据清理速度,大幅减少IO资源消耗

 

频繁写入的表,需要分区或分表

自增长与Latch Lock

闩锁是sqlServer自己内部申请和控制,用户没有办法来干预,用来保证内存里面数据结构的一致性,锁级别是页级锁

你可能感兴趣的:(SQL)