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

SQL优化可以从哪些方面入手

一、表的设计优化

表的设计优化,参照阿里开发手册,例如:

1、字段选择合适的类型(verchat, number)等,字符串,金额等根据业务决定

2、选择合适的长度,比如性别等可以用一个字符表示的,就不要设值很长的空间,或者使用verchar这些可变长度的字符了

二、索引优化

根据索引创建原则建立索引(可参考上一篇文章:索引建立原则以及失效场景):

1、针对数据量大,且查询比较频繁的表建立索引

2、使用经常作为查询条件(where)、排序(order by)、分组(group by)操作的字段建立索引

3、尽量选择区分度高的字段作为索引,尽量建立唯一索引,区分度越高,使用的索引越高效。

4、尽量使用联合索引(多个字段),减少单列索引,查询的时候,联合索引很多时候可以用到“覆盖索引”,节省存储空间,避免“回表查询”,提高查询效率

5、索引也不是越多越好,尽量控制索引的数量

6、如果要建立索引的列不能存储null值,请在创建表时,使用not null约束,可以增加查询效率

避免索引失效,索引失效的场景:

1、违反最左前缀原则

2、范围查询右边的列,不能使用索引

3、不要在索引列上进行运算操作,索引会失效

4、字符串不加单引号,造成索引失效

5、以%开头的like模糊查询,索引失效。

三、SQL语句优化

1、 select语句务必指明字段的名称(不能使用select *),select *大概率会触发回表查询

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

3、尽量使用union all 代替 union ;因为union会多一次过滤重复数据的操作,效率低

4、避免在where自居中对字段进行表达式的操作,例如substr,可能导致索引失效

5、Join优化,能用innerjoin的就不用left join、left join;因为内连接innerjoin会自动帮你选择哪个表比较小,就放外面,把大表放里面,减少消耗,如果使用left join等就会认为你确定好了,不会调整顺序

四、主从复制、读写分离

对于数据库的使用,为了避免写的操作所造成的性能影响,可以采用读写分离的架构。

读写分离解决的是,数据库的写入,影响了查询的效率

五、分库分表

超过500万的数据,可进行分库分表

比如我之前哪家公司,使用日期作为分区键,每天500-2000万数据,要是不分区,那根本查不动;所以数据量上来了,就要选择合适的方案进行分库分表

相关文章:

  • 网络基础(持续更新中)
  • 什么是HTTP和HTTPS?它们之间有什么区别?
  • Leetcode 72. 编辑距离
  • UE5 Niagara 粒子远处闪烁解决
  • 告别冷冰冰:如何训练AI写出温暖人心的广告文案
  • 函数重载讲解
  • ios苹果手机使用AScript应用程序实现UI自动化操作,非常简单的一种方式
  • 25化学化工研究生复试面试问题汇总 化学化工专业知识问题很全! 化学化工复试全流程攻略 化学化工考研复试真题汇总
  • 深入理解Python字典(Dictionary):从基础操作到高级应用
  • B. 中位数
  • 安装海康威视相机SDK后,catkin_make其他项目时,出现“libusb_set_option”错误的解决方法
  • 排序与算法:希尔排序
  • 航空公司客户价值分析
  • 网页制作01-html,css,javascript初认识のhtml的基本标记
  • 【Linux】Linux 文件系统——关于inode 不足的相关案例
  • Html、Markdown的信息提取
  • 解锁享元模式:内存优化与性能提升的关键密码
  • Python 安装避坑指南
  • DeepSeek 和 ChatGPT 在特定任务中的表现:逻辑推理与创意生成
  • 计算机组成原理——输入/输出系统(十五)
  • 如此城市|上海老邬:《爱情神话》就是我生活的一部分
  • 李云泽:支持设立新的金融资产投资公司,今天即将批复一家
  • 福特汽车撤回业绩指引,警告关税或造成15亿美元利润损失
  • 1101名优秀运动员拟保送,全红婵、黄雨婷、盛李豪在列
  • 新闻1+1丨多地政府食堂开放 “舌尖上的服务”,反映出怎样的理念转变?
  • 五一假期,新任杭州市委书记刘非到嘉兴南湖瞻仰红船