数据库笔记

关系型数据库

  • 第一范式:满足所有字段不可再分
  • 第二范式:在第一范式的前提下,每个非主属性都完全函数依赖于主键,就是根据主键可以推出所有非主属性
  • 第三范式:在第二范式的基础上,如果每个非主属性都不传递函数依赖于主键,就是非主属性中不存在传递依赖
  • BC范式:满足BC范式的关系将消除任何属性(主属性和非主属性)对关系键的部分函数依赖和传递函数依赖(在第三范式的基础上,主属性中也不能存在传递依赖和部分依赖)

数据库索引与B+树

  • 新建表格,有列abcde,其中a为主键

  • 主键索引如下图

  • 新建索引(bcd),索引图如下:

  • 所以新建索引的时候,不会完全复制整张表的数据,仅在新建的B+树的数据页中存储索引列和主键列,增加主键列是因为方便回表查询,比如按照索引查询,要返回所有列,那么先查询索引树得到主键,然后再去主键树中查询即可得到所有列

mysql中explain字段

explain:用于执行sql语句,并返回其执行过程

explain:id

  • id相同,由上到下执行
  • id不同,则大id优先执行

explain:select_type

  • simple:普通select查询,不含子查询、联合查询(union)
  • primary:主查询,包含子查询,最外层标记为主查询
  • subquery:子查询
  • derived:衍生查询,子查询中的结果存放在临时表中,则被标记为derived
  • union:联合查询,用于标记union关键字后的select查询
  • union result:select的查询结果作为一张临时表出现在from关键字后

explain:table:操作的数据库表名

explain:partitions:操作的数据库表所在分区名

explain:type解释

  • system:表中仅有一条记录
  • const:通过一次索引就查到,相当于where条件查询中条件为常量,且表中仅一行数据匹配
  • eq_ref:通过索引扫描,表中仅一行数据匹配
  • ref:通过索引扫描,多行匹配
  • range:只检索给定范围的行,使用一个索引来选择行
  • index:全索引树扫描,遍历整颗索引树
  • all:最差的,全表扫描

explain:possible_keys:查询中可能使用的索引

explain:key:查询中实际使用的索引

explain:ken_len:索引字段的最大可能长度

explain:ref:显示索引哪一列被使用了,如果可能的话,是一个常数。指明哪些列或常量被用于查找索引列上的值。

explain:rows:大致估算出找到所需的记录需要读取的行数

explain:rows:server层过滤后,剩下的满足查询记录的数量占比

explain:Extra解释:

  • using filesort:使用了索引来进行查询,但是排序时没有使用索引(索引的作用是查询和排序,速度很快),不要出现
  • using temporary:查询的时候使用索引,但是group和order的时候,不是按照索引来,那么会创建临时表(尽量在要排序和group的地方创建索引),绝对不要出现
  • using index:使用了索引
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值