当前位置: 首页 > article >正文

【MySQL】SQL 优化经验

1. 表的设计优化

  • 参考依据:参考阿里开发手册嵩山版,其中有很多关于MySQL表设计的内容。
  • 类型选择:根据存储内容选择合适类型,如数值存储可选tinyint、bigint等,字符串可选varchar或text,根据内容长短选择合适类型可节省存储成本并提升查询效率。

2. SQL语句优化

  • select语句:务必指名字段名称,避免使用select *,指明字段可能使用覆盖索引,性能更高,使用select *可能造成回表查询。
  • 避免索引失效写法:之前讲过五种索引失效情况,编写SQL语句时应尽量避免。
  • union和union all:尽量使用union all代替union,union会多一次过滤操作,效率较低。例如union会合并结果并展示重复数据,union all则不会去重。
  • 避免where子句表达式操作:避免在where子句中对字段进行表达式操作,否则可能导致索引失效。
  • 连接优化:能用inner join就不要使用left join或right join;如果必须使用左连接和右连接,尽量以小表为驱动(写前面)。内连接会自动优化表顺序,优先把小表放外边,大表放里边,但left join和right join不会调整顺序,所以使用时要注意以小表为驱动,可通过循环类比理解,小循环放外层(类似小表)性能更好。

3. 主从复制和读写分离

在这里插入图片描述

  • 适用场景:数据库读操作较多时,为避免写操作影响读操作,可使用读写分离架构。
  • 架构原理:应用连接数据库中间件,包含主库master(负责写数据)和从库slave(负责读数据)。

写操作找主库,主库同步数据给从库;
读操作走从库,实现读写隔离,提高查询效率。

4. 分库分表

  • 使用时机:一般在数据量特别大时,如一张表数据超过500万,可考虑分库分表,后续会详细讲解相关内容。

面试回答要点

  • 提及从五个方面阐述SQL优化经验,分别是表的设计优化(参考阿里开发手册,如数据类型选择)、索引优化(参考创建索引原则和索引失效注意事项)、SQL语句优化(避免索引失效、不用select *、说明union和union all区别、小表驱动大表等)、主从复制和读写分离架构(避免写影响读,生产环境搭建主从库分开读写)、分库分表。

http://www.kler.cn/a/455898.html

相关文章:

  • Java高级工程师1380道面试题(附答案)分享
  • 一个简单的深度学习模型例程,使用Keras(基于TensorFlow)构建一个卷积神经网络(CNN)来分类MNIST手写数字数据集。
  • iOS Masonry对包体积的影响
  • 深入了解 Java 字符串:基础、操作与性能优化
  • 【Java数据结构】LinkedList与链表
  • 电商项目-数据同步解决方案(二)首页广告缓存同步
  • python网络框架——Django、Tornado、Flask和Twisted
  • 【树莓派Pico设备驱动】-LCD1602显示屏I2C方式驱动(基于PCF8574)
  • React 脚手架配置代理完整指南
  • bash shell的条件语句
  • LabVIEW神经肌肉电刺激与记录系统
  • 入职体检尿潜血3+能通过吗,什么原因引起
  • Pandas系列|第二期:Pandas中的数据结构
  • OpenGL笔记(3)
  • Vue.js 高级组件开发:抽象与高性能架构
  • 高质量配音如何影响游戏的受欢迎度
  • 软件耦合类型及相关说明
  • StarRocks 存算分离在得物的降本增效实践
  • mysql,mariadb,postgresql创建用户和授权的命令
  • 10G_ethernet学习记录(1):10G Ethernet PCS/PMA ip的使用