MySQL的一些见解2

六、数据库的三范式

        第一范式:列不可再分
        第二范式:不允许部分依赖

        第三范式:不允许传递依赖

且三大范式是一级一级依赖的,第二范式建立在第一范式上,第三范式建立第一第二范式上。
        第一范式的目标是确保每列的原子性:如果每列都是不可再分的最小数据单元,也称为最小的原子单元,则满足第一范式1NF
        首先满足第一范式,并且表中非主键列不存在对主键的部分依赖。第二范式要求每个表只描述一件事情。
        第三范式定义是,满足第二范式,并且表中的列不存在对非主键列的传递依赖。除了主键订单编号外,顾客姓名依赖于非主键顾客编号。

七、数据库事务

事务TRANSACTION是作为单个逻辑工作单元执行的一系列操作,这些操作作为一个整体一起向系统提交,要么都执行、要么都不执行。事务是一个不可分割的工作逻辑单元事务必须具备以下四个属性,简称 ACID 属性
        原子性Atomicity:事务是一个完整的操作。事务的各步操作是不可分的(原子的);要么都执
行,要么都不执行
        一致性Consistency:当事务完成时,数据必须处于一致状态
        隔离性Isolation:对数据进行修改的所有并发事务是彼此隔离的,这表明事务必须是独立的,它不应以任何方式依赖于或影响其他事务
        永久性Durability:事务完成后,它对数据库的修改被永久保持,事务日志能够保持事务的永久性

八、SQL语句优化

1、查询语句中不要使用 select *
2、尽量减少子查询,使用关联查询left join、right join或者inner join替代
3、减少使用IN或者NOT IN,使用exists、not exists或者关联查询语句替代
4、or查询尽量用union或者union all代替。在确认没有重复数据或者不用剔除重复数据时,union
all会更好
5、应尽量避免在where子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。
6、应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表
扫描,如:select id from t where num is null 可以在num上设置默认值0,确保表中num列没有
null值,然后这样查询: select id from t where num=0

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值