美文网首页
MSSQL &MYSQL

MSSQL &MYSQL

作者: 心彻 | 来源:发表于2016-11-02 20:36 被阅读25次

    2016-10-26 09:00
    李富强

    1.数据库表设计技巧
    1.1 三个范式
    1NF:原子性,属性不可拆分
    2NF:实体的唯一性,没有两行一模一样的数据
    3NF:不允许冗余,但在实际工作中可以存在适当的冗余以提升SQL性能
    1.2 识别与处理多对多的关系
    在多对多的关系中可以引入一个关系表
    1.3 主键的取值方法
    主键(聚集索引)最好用int类型
    组合主键最多2个字段
    1.4 字段类型的选择
    int 最大值2亿
    bigint 基本用不到最大值
    业务需求允许的情况下日期字段最好选择int字段类型(?为什么)
    表中不常用的字段最好拆分到单独的表存放

    2.如何写出高效的SQL
    2.1 在生产环境中最好不要出现select *
    nvarchar(max)主从同步的时候易出错
    优点:方便扩展
    缺点:造成额外的书签查找或是由查找变为扫描
    2.2 查询或者更新删除最好用top()
    避免忘记写where条件时造成的误操作
    2.3 查询要加with(nolock)
    十五的隔离性被降低了
    可能造成脏读,但不会造成堵塞
    2.4 声明变量时指定长度
    对T-SQL来说,不指定长度,默认长度为1,所以如果不指明长度的话容易造成变量值被截断
    2.5 使用Schema前缀来选择表
    不指定Schema会导致重编,小号CPU资源
    2.5 字段不要放到函数中作为查询条件
    即使字段有索引也用不了索引,导致SQL效率低
    SQL的函数可以放到程序中去实现
    2.6 避免字段发生隐式转换
    where条件中,给字段赋的值要和字段的类型一直
    2.7 SQL禁止使用 like '%××' 或者not like '%××'
    这样的SQL不走索引,很耗CPU资源
    %放在后面的可以走索引
    2.8 如果id是自增长的主键,order by id desc 的效率比order by createtime desc 要高
    2.9 比较复杂的逻辑在程序中进行处理

    1. 聚集索引和非聚集索引的区别
      聚集索引:表中各行的物理顺序与键值的逻辑......

    4.如何创建合适的索引
    sqlserver创建主键时,默认创建聚集索引

    5.表连接中的on条件和where条件
    on条件在join运算前过滤
    where条件在join之后过滤

    推荐:keypress开源的密码管理工具

    相关文章

      网友评论

          本文标题:MSSQL &MYSQL

          本文链接:https://www.haomeiwen.com/subject/kpfbuttx.html