小滴课堂-学习笔记:数据库设计查询和上线里面的坑

56 篇文章 0 订阅
15 篇文章 0 订阅

logo 愿景:"让编程不再难学,让技术与生活更加有趣"


更多架构课程请访问 xdclass.net

 

目录

第1集 数据库查询关键词执行顺序

第2集 设计数据库表时相似字段类型你能区分吗《上》

第3集 2038年1月19号会有多少系统产生bug,相似字段类型区分《下》

第4集 场景模拟之千万级Mysql数据表分页查询优化

第5集 BAT大厂里面 应用版本更新,数据库上线流程

干货文档


第1集 数据库查询关键词执行顺序

简介:数据库查询指令的执行顺序

  • 考点:考查数据库查询指令的执行顺
  • 难度:【 ** *】
  • 数据库查询的指令有多个,说下执行顺序 select、where、from、group by、having、order by
 


from 从哪个表查询
where 初步过滤条件
group by 过滤后进行分组[重点]
having 对分组后的数据进行二次过滤[重点]
select 查看哪些结果字段
order by 按照怎样的顺序进行排序返回[重点]
​
​
select video_id,count(id) num from chapter group by video_id  having num >10
order by video_id desc
  • 建议:去网上找sql练习题

 

 

 

 

 

 

 

 

 

 

第2集 设计数据库表时相似字段类型你能区分吗《上》

简介:设计数据库的时候相似类型的字段区分

  • 考点:是否知道常用的相似字段他们的区别
  • 难度:【 ** *】
  • varchar(len) char(len) len存储的是字符还是字节
  • MySQL中的varchar和char有什么区别,应该怎么选择
对比项char(16)varchar(16)
长度特点长度固定,存储字符长度可变,存储字符
长度不足情况插入的长度小于定义长度时,则用空格填充小于定义长度时,按实际插入长度存储
性能存取速度比varchar快得多存取速度比char慢得多
使用场景适合存储很短的,固定长度的字符串,如手机号,MD5值等适合用在长度不固定场景,如收货地址,邮箱地址等
   

 

 

 

 

 

 

 

 

第3集 2038年1月19号会有多少系统产生bug,相似字段类型区分《下》

简介:设计数据库的时候相似类型的字段区分

  • 考点:是否知道常用的数据库时间类型相似字段的区别
  • 难度:【 ** **】
  • MySQL中的datetime和timestamp有什么区别
类型占据字节范围时区问题 
datetime8 字节1000-01-01 00:00:00到 9999-12-31 23:59:59存储与时区无关,不会发生改变 
timestamp4 字节1970-01-01 00:00:01 到 2038-01-19 11:14:07存储的是与时区有关,随数据库的时区而发生改变 
  • 为什么timestamp只能到2038年
 


MySQL的timestamp类型是4个字节,最大值是2的31次方减1,结果是2147483647,
转换成北京时间就是2038-01-19 11:14:07

 

 

 

 

 

第4集 场景模拟之千万级Mysql数据表分页查询优化

简介:针对大数据量sql分页优化思路

  • 考点:是否有大数据分页优化思路
  • 难度:【 ** **】
  • 线上数据库的一个商品表数据量过千万,做深度分页的时候性能很慢,有什么优化思路
 


现象:千万级别数据很正常,比如数据流水、日志记录等,数据库正常的深度分页会很慢
慢的原因:select * from product limit N,M
MySQL执行此类SQL时需要先扫描到N行,然后再去取M行,N越大,MySQL扫描的记录数越多,SQL的性能就会越差
​
1、后端、前端缓存
​
2、使用ElasticSearch分页搜索
​
3、合理使用 mysql 查询缓存,覆盖索引进行查询分页
  select title,cateory from product limit 1000000,100
  
4、如果id是自增且不存在中间删除数据,使用子查询优化,定位偏移位置的 id
select * from oper_log where type='BUY' limit 1000000,100; //5.秒
      
select id from oper_log where type='BUY' limit 1000000,1; // 0.4秒 
​
select * from oper_log where type='BUY' and  id>=(select id from oper_log where type='BUY' limit 1000000,1) limit 100; //0.8秒 
​
​




 

 

 

 

 

第5集 BAT大厂里面 应用版本更新,数据库上线流程

简介:掌握大厂里面数据库上线流程,版本更新流程

  • 考点:是否有正确的数据库部署流程
  • 难度:【 ** ***】
  • 你公司里面产品迭代更新,开发好代码和数据库,上线流程是怎样的

image-20200229195411491

干货文档

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dev666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值