前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >面试必问之mysql优化

面试必问之mysql优化

作者头像
一笠风雨任生平
发布2022-01-06 14:19:06
3450
发布2022-01-06 14:19:06
举报
文章被收录于专栏:服务化进程服务化进程

问题1千万级的表如何优化?

针对这个问题,首先需要考虑该表记录数是否还会增加,增量是多少,下面就这个面试主要介绍三个方面的优化

1、 索引优化 这里索引优化主要指的是,该表是查询多还是新增修改多,这里会影响索引的创建,比如说新增、更新频繁的,不能创建太多的索引,这会影响插入以及更新的效率,只需要创建关键字段的索引

2、分区 当表达到一定数量,为了保持查询效率,就需要定时清理表中的数据,或者通过分区来提升查询效率。先说说清理数据,delete肯定是很慢的,这里可以通过drop 分区来提升清理速度,查询时通过分区字段来查询指定分区数据,提升查询效率

3、分表 记录数很大,并且会增长,这里可以根据情况进行分表,分表与分区原理类似,不过遇到巨量数据并且增量巨大,可以考虑根据主业务字段分表,同时对表根据日期分区,这里举个例子,比如说存储每个省的业务日志数据,这里查询时肯定是需要选择省分,查询总量意义不太大,这类可以考虑根据省分表,然后每张表根据日期来分区。

5、分库 这里一般是数据安全考虑部署在不同的地域,或者需要要服务化,将不同业务拆分,进行分库部署。这里就涉及到跨库查询的问题,如果是服务化,这里可以规范化,通过rest接口来交互。

你一般是怎么针对慢查询优化

1、查看执行计划增加索引来提高效率

2、sql关键字优化

  • 使用not exists代替not in,not in不会使用索引
  • 查询条件避免使用前导模糊查询,如'%xxx',因为无法使用索引
  • 查询条件使用or的话,要保证or两边的列都要有索引,否则索引失效
  • 字符串型字段为数字时,在where条件中要加单引号,否则索引失效(因为这样MySQL会讲表中字符串类型转换为数字之后再比较,导致索引失效)
  • ISNULL判断不走索引,要慎用
  • LIMIT分页的页码不能太大,会查询出所有的结果然后丢弃掉不需要的。使用主键做连接查询
  • 使用临时表来替换in 或者exists
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020/09/19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题1千万级的表如何优化?
  • 你一般是怎么针对慢查询优化
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档