5大步骤+10个案例,堪称SQL优化万能公式努力做一个伪程序员

在应用开发的早期,数据量少,开发人员开发功能时更重视功能上的实现,随着生产数据的增长,很多SQL语句开始暴露出性能问题,对生产的影响也越来越大,有时可能这些有问题的SQL就是整个系统性能的瓶颈。

二、SQL优化一般步骤

type由上至下,效率越来越高。

Extra

默认是关闭的,开启语句“setprofiling=1;”

SHOWPROFILES;SHOWPROFILEFORQUERY#{id};

trace分析优化器如何选择执行计划,通过trace文件能够进一步了解为什么优惠券选择A执行计划而不选择B执行计划。

setoptimizer_trace="enabled=on";setoptimizer_trace_max_mem_size=1000000;select*frominformation_schema.optimizer_trace;

三、场景分析

1)索引

KEY`idx_shopid_orderno`(`shop_id`,`order_no`)

2)SQL语句

select*from_twhereorderno=''

查询匹配从左往右匹配,要使用order_no走索引,必须查询条件携带shop_id或者索引(shop_id,order_no)调换前后顺序。

KEY`idx_mobile`(`mobile`)

select*from_userwheremobile=12345678901

隐式转换相当于在索引上做运算,会让索引失效。mobile是字符类型,使用了数字,应该使用字符串匹配,否则MySQL会用到隐式替换,导致索引失效。

KEY`idx_a_b_c`(`a`,`b`,`c`)

select*from_twherea=1andb=2orderbycdesclimit10000,10;

对于大分页的场景,可以优先让产品优化需求,如果没有优化的,有如下两种优化方式:

selectt1.*from_tt1,(selectidfrom_twherea=1andb=2orderbycdesclimit10000,10)t2wheret1.id=t2.id;

KEY`idx_shopid_status_created`(`shop_id`,`order_status`,`created_at`)

select*from_orderwhereshop_id=1andorder_statusin(1,2,3)orderbycreated_atdesclimit10

in查询在MySQL底层是通过n*m的方式去搜索,类似union,但是效率比union高。

in查询在进行cost代价计算时(代价=元组数*IO平均值),是通过将in包含的数值,一条条去查询获取元组数的,因此这个计算过程会比较的慢,所以MySQL设置了个临界值(eq_range_index_dive_limit),5.6之后超过这个临界值后该列的cost就不参与计算了。因此会导致执行计划选择不准确。默认是200,即in条件超过了200个数据,会导致in的代价计算存在问题,可能会导致Mysql选择的索引不准确。

3)处理方式

可以(order_status,created_at)互换前后顺序,并且调整SQL为延迟关联。

KEY`idx_shopid_created_status`(`shop_id`,`created_at`,`order_status`)

select*from_orderwhereshop_id=1andcreated_at>'2021-01-0100:00:00'andorder_status=10

范围查询还有“IN、between”。

6、不等于、不包含不能用到索引的快速搜索

可以用到ICP

select*from_orderwhereshop_id=1andorder_statusnotin(1,2)select*from_orderwhereshop_id=1andorder_status!=1

在索引上,避免使用NOT、!=、<>、!<、!>、NOTEXISTS、NOTIN、NOTLIKE等。

如果要求访问的数据量很小,则优化器还是会选择辅助索引,但是当访问的数据占整个表中数据的蛮大一部分时(一般是20%左右),优化器会选择通过聚集索引来查找数据。

select*from_orderwhereorder_status=1

查询出所有未支付的订单,一般这种订单是很少的,即使建了索引,也没法使用索引。

selectsum(amt)from_twherea=1andbin(1,2,3)andc>'2020-01-01';select*from_twherea=1andbin(1,2,3)andc>'2020-01-01'limit10;

如果是统计某些数据,可能改用数仓进行解决;

如果是业务上就有那么复杂的查询,可能就不建议继续走SQL了,而是采用其他的方式进行解决,比如使用ES等进行解决。

select*from_twherea=1orderbybdesc,casc

desc和asc混用时会导致索引失效。

对于推送业务的数据存储,可能数据量会很大,如果在方案的选择上,最终选择存储在MySQL上,并且做7天等有效期的保存。

那么需要注意,频繁的清理数据,会照成数据碎片,需要联系DBA进行数据碎片处理。

THE END
1.大神给了我一个公式,不敢独享分享给大家大神给了我一个公式,不敢独享 分享给大家 小海在远方 0 2024-11-27 09:53 坛友要的定个位甄选表,选中一组,定准一个个位,百分百9-16注中直选 百2589 十1458 个* 百147 十037 个* 百147 十269 个* 百2589 十269 个* 百147 十1458 个* 百2589 十037 个* 百036 https://m.17500.cn/arts-m/sdetail-11210687.html
2.2024年天天开好彩大全,数据导向解析计划Prime59.572引言2024年,随着数据科学和人工智能技术的飞速发展,彩票行业也迎来了一场革命。天天开好彩大全,一个基于数据导向的彩票分析和预测平台,应运而生。Prime59.572,作为该平台的核心算法,通过深度学习和大数据分http://xcyahf.sdecx.cn/post/4269.html
3.数字规律揭秘软件揭秘神秘万能公式揭秘软件:探索数字规律的新工具对于这类问题,寻找万能公式可能并不实际,更简单的方法是在坐标系中画出相应的点,观察点的大致分布,然后选择相应的函数形式。由于这两个问题的点分布近似为直线,因此对应的函数是一次函数,也就是等差数列。可以通过y=ax+b的形式来求解具体的函数参数。 http://h5.qaszl.com/96D042001499.html
4.一题思考第10题。根据题意,b=-8,则a=-10 ,c=-6,d=-13,e=-11,代入计算就可。 第16题。根据题意,c-4+a=b-4+a+4,所以c=b+4,c-4+a=a+4+d,所以,c=d+8,所以c>b>d,不妨设c=7,则b=3,d=-1,a的值从2,-2,6中取得,经检验,-2和6 都不符合题意,所以a=2,代入计算。若c=6,也可以用上https://www.jianshu.com/p/b7b6fe2a3838
5.选股指标公式失误引发股市笑话大解密:投资高手竟变搞笑大师!理想的股市操作需有一套方法,走在市场前面,做确定性交易。https://www.55188.com/thread-27771232-1-1.html
6.彩票里的那些套路和平台上的猫腻到底有哪些?今天的彩票查询结果已经公布,广大彩民可以通过各大彩票官方网站以及手机应用程序快速获取最新信息。无论是双色球、福彩3D,还是体彩竞彩足球,各种彩票的开奖结果都一目了然。大家可以根据开奖结果对照自己的彩票,看看是否幸运中签。为了提高中奖概率,专家们也提供了一些选号技巧和建议,帮助彩民理性投注。祝大家好运,期待下http://www.hljmx.net/wenda/2433.shtml
7.用数学破解彩票漏洞净赚600万,稳赚不赔的彩票,竟然真的存在?04:03 海岛物产真丰富,小马发现好几个辣螺窝,螃蟹直接现抓现吃 02:49 退大潮去赶海,海滩上挖出黄蚬子直接烤,没有比这个新鲜的 02:11 半夜去海螺岛赶海,月光非常亮,大海螺连着上货 01:29 奇葩的轮船螺旋桨,像打蛋器一样垂直装进船底,真是大开眼界 01:34 这才叫“火车”,轮子一路火花四溅,其实是在https://www.163.com/v/video/VZGJBB7T1.html
8.你准备好了吗?全民编程时代来临之彩票克星上一集为大家介绍了自动搜索专家功能。这一集为大家介绍一个新出的超级强大的功能,万能可编程公式脚本。 很多技术型彩民都有自己的一套分析算号方法,但是都苦于不懂程序,无法将自己的想法付诸于现实。现在好了,有了这套可编程万能公式脚本,任何一个彩民都可以轻松转变成一名程序员,自己动手,自己写程序,轻松实现你http://www.360doc.com/content/17/0824/08/45096753_681675999.shtml
9.官方力荐:?立刻参与,好礼领不停!中国社会科学院法学研究所副研究员邓丽在著作《收养法论——源流、体系与前瞻》(简称《收养法论》)中指出,目前,私自收养问题压力主要传到和集中在收养登记业务端口,主要涉及四类未成年人,即未婚生育的子女、婚外生育的子女、未成年人生育的子女和遭遇性侵女性生育的子女。这些情况中,如归入“生父母存在其他客观原因无http://mbd.ly-ai.com/222719.html
10.2023年12月重庆市永川区事业单位第四季度公开招聘96名工作人员D.万米级作业型无人 5.定义: 有意注意:有预定目的,必要时还需要作一定意志努力的注意。 无意注意B.程序员 C.系统分析员 D.系统测试工程师 25.某公司要完成一项工程,如果单独交给甲项目组,需要x天322.对于科学家来说,数学公式可以展现大自然的基本原理,或者将复杂的东西简洁地表达出来,这的确。但https://m.book118.com/html/2024/0108/8130111050006024.shtm
11.分享一个好用的程序员计算器(公式变量计算过程位键盘++)!!!程序员计算器 位运算 公式计算器 1星需积分: 31194 浏览量2021-08-14上传11KBRAR 写程序,特别是单片机里位运算,每次都不知道程序运行会计算出什么结果,一直都没有找到好用的计算器。终于自己写了一个,支持公式、计算过程显示,二进制、十进制、十六制同时显示,位键盘等,需要的同学拿去用。 1、支持常量 PI E,https://download.csdn.net/download/zyhlove813/21068251
12.从好玩到好用:程序员用AI提效的那些事儿京东云技术团队Prompt提问万能公式 案例1 基于ChatGPT进行资源排期 1、首先进行拆分,分为周一到周五和周六周日 2、引导chatGPT进行排班 案例2 让chatGpt帮忙看下正则表达式的含义 在看代码的过程中,发现有个地方使用了正则表达式进行规则匹配,但是没有注释标明规则含义,所以使用chatGpt帮忙看下规则含义。 https://blog.51cto.com/u_15714439/7471137
13.Sorry,thewebsitehasbeenstopped爱立信交换机维修报价销售服务网是 "十年交换机之家" 的ERICSSON行业网站,十八年专注于爱立信品牌程控电话交换机,为上千家客户提供高性价比的服务,为上百家集成经销商进行高收益合作。 爱立信交换机销售服务网从2000年起销售爱立信设备,从设计方案、设备选型、安装调试、使用培训、维护保养、维修回收等为用户一条龙服务。http://www.ericsson365.com/index.php/www.ericsson365.com/index.php/n67-242.xhtml
14.姚佰顺作者简介: 来了就点一下收藏吧,等我发达了,给大家发彩票! 写作很久很久,也出版过几本书,[展开]【今】《女程序员的恋爱Bug》 类型:原创-言情-近代现代-爱情 发表时间:2023-08-01 11:06:11 进度:完结 字数:183083 积分:3,446,275 收藏:14《我的伪程序员男友》 类型:原创-言情-近代现代-爱情 发表时间:https://wap.jjwxc.net/wapauthor/2570582
15.最新官方网站登录入口黑龙江有264.3下载cmhui.com安装你想要的应用 更方便 更快捷 发现更多 58%好评(31人) 61 详细信息 软件大小: 15.38MB 最后更新: 2024-11-06 02:05:14 最新版本: V27.52.56 文件格式: apk 应用分类:ios-Android 使用语言: 中文 : 需要联网 系统要求: 7.6以上 应用http://winontech.com/index.php/blogs616/76383.html
16.欧拉定理快速幂与逆元欧拉定理、快速幂与逆元,程序员大本营,技术文章内容聚合第一站。https://www.pianshen.com/article/5070863779/