如何优化sql

一、表的设计优化

参考阿里开发手册(嵩山版)

1、设置合适的数值(tinyint、int、bigin),要根据实际情况选择。

2、设置合适的字符串类型(char 和 varchar),char 定长效率高,varchar 可变长度,效率稍低

二、索引优化

参考优化创建索引原则索引创建的原则-CSDN博客与索引失效博客:什么情况下索引会失效-CSDN博客

三、SQL 语句优化

1、SELECT 语句务必指明字段名称(避免直接使用 select *)

2、SQL 语句要避免造成索引失效的写法

3、尽量用 union all 代替 union,union 会多一次过滤,效率低

4、避免在 WHERE 子句中对"索引列"进行表达式操作,会导致索引失效

5、Join 优化,能用 innerjoin 就不要用 left join、right join,如果必须使用,必须以小表为驱动,对于 LEFT JOIN,小表应该放在左边(左表当驱动)、对于 RIGHT JOIN,小表应该放在右边(右表当驱动),节约I/O(磁盘/内存读取)和 CPU 比较次数。innerjoin内连接会对两个表进行优化,优先把小表放到外边,把大表放到里面。而 left join 或 right join,不会调整顺序。

四、主从复制、读写分离

如果数据库的使用场景读的操作比较多的时候,为了避免写的操作所造成的性能影响。可以采用读写分离的架构。读写分离可以解决因为数据库的写入而导致的查询效率降低。

五、分库分表

篇幅较长,可参考分库分表博客:详解分库分表-CSDN博客

相关推荐
曦夜日长1 小时前
MySQL系统篇,安装部署(一):CentOS 7 下从卸载到登录的完整实战
数据库·mysql·centos
路上有只喵1 小时前
认识立创商城元器件 · 贴片电容 MLCC · 国巨CC0603KRX7R9BB104规格书解读4
数据库
SamDeepThinking1 小时前
配货单发货数为空告警误报治理:写表延迟复核方案
java·后端·架构
微学AI1 小时前
260多条异构链路背后,KFS如何同步数据库结构变化
数据库
努力进修1 小时前
多源异构数据库同步难题:DDL 结构变更自动化解决方案
运维·数据库·自动化
ly76891 小时前
读懂 PostgreSQL 执行计划:从 EXPLAIN 输出定位 Spring Boot 慢 SQL 的代价估算偏差
spring boot·sql·postgresql·执行计划·explain analyze·慢sql优化
Anastasiozzzz1 小时前
InnoDB 为什么不用跳表,Redis 为什么不用 B+树?一场“磁盘”与“内存”的终极对决
数据库·redis·b树
\光辉岁月/1 小时前
16.JavaSE-反射
java·反射
范什么特西1 小时前
加深动态代理的理解
java