zoukankan      html  css  js  c++  java
  • 数据库设计规范

    数据库相关的开发&优化原则
    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%’
  • 相关阅读:
    Java二维数组
    Java实现冒泡排序
    python类简记
    LaTeX:论文Instruction最后一段的章节引用
    在Adobe IIIustator中加入数学公式——配合MathType使用
    org.springframework.web.bind.annotation不存在
    xshell5 下载安装
    MultipartFile解析Excel
    开源项目环境搭建
    学习路线
  • 原文地址:https://www.cnblogs.com/hemajia/p/9712279.html
Copyright © 2011-2022 走看看