首页 > 数据库 >mysql数据库慢SQL优化

mysql数据库慢SQL优化

时间:2022-11-04 12:01:36浏览次数:45  
标签:数据库 SQL 查询 索引 字段 mysql md5

mysql数据库慢SQL优化
优化来源: 阿里云 云数据库RDS 慢sql 或者CAT监控系统中的Transaction SQL or URL根据平均时间反馈来排查,决定是否增加索引,或者调整业务逻辑代码。

1.场景1-业务查询的条件转换 in
转换业务逻辑,最终达到的结果是一致的。
比如根据某些条件来查询,通过in的关键字,但是如果in的查询条件过多,则无法使用索引,导致全表扫描。
所以可以根据业务情况,将从另外一个角度来查询判断,对查询条件做转换。

2.场景2-字符过长的字段不适合建立索引,可以考虑将作为md5映射,建立索引来修改。path_md5
比如在下单之前需要上传图片,图片的地址路径比较长,需要先保存起来,然后下单成功之后,再根据上送的图片路径来更新图片和订单号的关联。
可以考虑将图片路径映射成md5,然后在更新修改的时候,先将图片的路径映射转换md5,然后再根据md5做修改,且可以建立该md5字段索引列。
或者从业务上也可以考虑在图片上传接口之前先创建一个类似RequestId或者AccessToken,然后将图片上传和下单的两个接口的操作串联起来。可以关联

3.场景3-结算后的数据,不宜再批量查询且重新计算,而是从结算后的数据中直接查询获取落地数据。 settle
比如结算后的收益列表查询或收益列表导出功能,可以考虑从结算后的落地表中直接获取,而不是列表操作的重新批量查询批量计算,这样会影响接口的性能。

4.场景4-数据库建立索引
mysql数据库建立索引或联合索引,使用关键字EXPLAIN OR DESC来索引分析。
原则上可以建立查询SQL where条件的可变的字段为索引列,常量字段不宜建立索引。
语法结构:
ALTER TABLE `库`.`表` ADD INDEX `idx_字段1_字段2_字段3` (`字段1`, `字段2`, `字段3`);

标签:数据库,SQL,查询,索引,字段,mysql,md5
From: https://www.cnblogs.com/oktokeep/p/16857290.html

相关文章

  • mysql旧版本实现row_number
    mysql8.0已经有row_number了,但是很多同学用的还是老版本,当需要用到row_number的功能时,老版本也是有解决方案的。比如我们有一张表sync_task_log,有三个字段ds_id,state,sy......
  • prometheus 监控案例-Tomcat、Redis、Mysql、Haproxy、Nginx
    服务监控  可以根据prometheus官网找到对应服务的exporter  https://prometheus.io/docs/instrumenting/exporters/监控Tomcat容器  基于第三方exporter实现......
  • BindingException异常/SqlSessionXXX报错/org.apache.ibatis.binding.BindingExceptio
    application.yml中设置了mapper.xml的扫描路径,但是忘记了config包下面又手动写了一个SessionFactoryConfig。写这个类是因为一开始报错:SqlFactoryXXX(记不清了)的异常,后来百......
  • libmysqlclient.so.18: cannot open shared object file: No such file or directory
    DownloadTypeURLMirrorrepo.mysql.comBinaryPackage​​mysql-community-libs-compat-5.7.26-1.el7.x86_64.rpm​​SourcePackage​​mysql-community-5.7.26-1.el7.src.r......
  • MYSQL and vs
    vs2008与MYSQL​​http://wenku.baidu.com/link?url=47GBXOMUkNoEYGkQuw-Mv4fhsqKKtCuBHJ0cp8-uwbxP-J0t1YzwqZjaKBfP1prsU7BxO4cMcfHV2E9vyYz23s7nrL737wlk0sWKF4Li_0​......
  • mysql全量备份+binlog日志完整恢复数据
    首先,数据库在误操作之前必须已经开启了binlog日志功能,且binlog日志的保存周期必须大于全备份的时间周期!所谓恢复,就是让将全备份的数据全部恢复后,再使用mysqlbinlog命令把b......
  • sql server 获取系统时间的方法
    转自:http://www.qb5200.com/article/221588.html SqlServer中一个非常强大的日期格式化函数,获得当前系统时间,GETDATESqlServer中一个非常强大的日期格式化函数:获......
  • SpringCloud (五) - 云服务器Centos7.6,安装JDK,Maven,Mysql,Redis
    1、购买云服务器购买地址:https://cloud.tencent.com/act/pro/2022double11_warmup后面的环境都是基于此环境Centos7.6;2、安装SecureCRT和SecureFX2.1SecureCRT教......
  • Java(screw)生成数据库表结构
    数据库支持MySQLMariaDBTIDBOracleSqlServerPostgreSQLCacheDB(2016)文档生成支持htmlwordmarkdown方式一:代码生成<dependency><groupId>cn......
  • 安装mysql
    //-----------------*****本文章只做学习参考,侵权立删*****-----------------\\转载链接:https://www.downkuai.com/soft/161548.html总结概要如下:1、完成安装包下载后,点......