java程序员进阶:618大战前夕,一条SQL引发的深思—MySQL优化

优化概述

  • 采取一定措施使变得优异。
  • 为了更加优秀而“去其糟粕,取其精华”;
  • 为了在某一方面更加出色而去其糟粕;
  • 为了在某方面更优秀而放弃其他不太重要的方面;
  • 使某人/某物变得更优秀的方法/技术等;
  • 在计算机算法领域,优化往往是指通过算法得到要求问题的更优解

一个Sql引发的思考

这是个报表查询的SQL,发现下载excel报表的时候特别慢,请你优化它

常用的优化方式

  1. 服务器硬件
  2. MySql服务器优化
  3. SQL本身优化
  4. 反范式设计优化
  5. 物理设计优化(字段类型、长度设计,存储引擎选择)
  6. 索引优化

反范式化设计

  1. 反范式化是针对范式化而言的
  2. 所谓得反范式化就是为了性能和读取效率得考虑而适当得对数据库设计范式得要求进行违反
  3. 允许存在少量得冗余,换句话来说反范式化就是使用空间来换取时间

三大范式

数据库设计的第一大范式

  1. 数据库表中的所有字段都只具有单一属性
  2. 单一属性的列是由基本数据类型所构成的
  3. 设计出来的表都是简单的二维表

数据库设计的第二大范式

要求表中只具有一个业务主键,也就是说符合第二范式的表不能存在非主键列只对部分主键的依赖关系

数据库设计的第三大范式

指每一个非非主属性既不部分依赖于也不传递依赖于业务主键,也就是在第二范式的基础上相处了非主键对主键的传递依赖

物理设计

为表中的字段选择合适的数据类型

当一个列可以选择多种数据类型时

  1. 优先考虑数字类型
  2. 其次是日期、时间类型
  3. 最后是字符类型
  4. 对于相同级别的数据类型,应该优先选择占用空间小的数据类型

索引是什么?

MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。可以得到索引的本质:索引是数据结构。

最简单的索引

稍微复杂点的索引

MySql中的索引

上面是数据表,一共有两列七条记录,最左边的是数据记录的物理地址

索引分类

基础语法

本文到此结束!喜欢本文的朋友帮忙转发和关注一下,感谢!

PS:本文完整视频获取地址:Java学习、面试;文档、视频资源免费获取

转载于:https://juejin.im/post/5cf526b1f265da1b897abb0b

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值