数据库设计规范

数据库相关的开发&优化原则
  1. 为每个数据表创建聚集索引,以及其它必要的索引(根据业务需求识别经常要查询的字段)
  2. 数据表结构的定义应该优先考虑降低SQL查询的复杂性
  3. 优先使用唯一索引来保证字段值的不重复性(用异常来识别重复插入)
  4. 可适当增加冗余字段降低查询的复杂度
  5. WHERE过滤条件要符合SARG原则
  6. 使用参数化查询,重用执行计划
  7. 共用数据库连接,避免反复打开。
  8. 尽量使用有序GUID,避免直接使用 newid()
  9. 禁止使用触发器,禁止使用存储过程,禁止使用CLR SP
  10. 避免在数据库中执行较复杂的业务逻辑(SP),或者复杂的数据转换、计算
  11. 尽量降低SQL语句的复杂性,可适当返回 粗粒度结果让 应用程序代码来处理
缺少索引的危害
  1. I/O -> 内存 -> CPU , 压力全部变大。
  2. 由于需要扫描大量记录,导致语句运行很慢。
  3. 容易产生大量的锁,阻塞其它进程,以及被阻塞。
  4. 由于持有过多的锁,出现死锁的机率也会变大。
缺少索引的改进建议
  1. 为表指定主键
  1. 为外键字段创建索引
  2. 为一些重要的查询条件创建索引
  3. 关注执行计划中高成本的:扫描,联接,分组,排序。
创建索引的注意事项
  1. 索引不是越多越好,尤其要避免产生冗余索引。
  2. 只为频繁查询的参考字段创建索引。
  3. 创建高选择性的索引(符合条件的行数与总行数之比)。
  4. 索引值不得超过900字节
  5. 不建议创建包含索引(除非那个查询非常稳定非常重要)
冗余索引的危害
  1. 更新数据的SQL运行更慢,因为要维护索引。
  2. 浪费更多的磁盘资源。
  3. 耗费更多的维护成本。
SARG是什么?
 
  SARG: Searchable Arguments
  搜索参数 (SARG) 可指定精确匹配、
  值的范围或由 AND 联接的两项或多项的连接,因此能够限制搜索范围。
 
  SARG格式:
  1. 列 运算符 <常量或变量>
  2. <常量或变量> 运算符 列
  SARG 运算符包括 =、>、<、>=、<=、IN、BETWEEN,
  有时还包括 LIKE(在进行前缀匹配时,如 LIKE ‘Fish%')。
  SARG 可以包括由 AND 联接的多个条件。
  非 SARG 运算符包括: NOT运算符 、函数调用 和 字段计算表达式。
 
不符合SARG的改进建议
  1. 有函数调用的:去掉函数掉用,调整语句。
  2. 字段计算表达式:将字段与常量分离。
  3. 使用 NOT:调整业务需求,使用一个较小的范围。
  4. 使用 NOT:根据业务需求,拆分表。
  5. LIKE‘%XXX%’ :调整业务需求,改写为 LIKE ‘XXX%’

转载于:https://www.cnblogs.com/hemajia/p/9712279.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值