| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> SQL优化万能公式 -> 正文阅读 |
|
[大数据]SQL优化万能公式 |
目录 案例6、不等于、不包含不能用到索引的快速搜索。(可以用到ICP) 前言在应用开发的早期,数据量少,开发人员开发功能时更重视功能上的实现,随着生产数据的增长,很多SQL语句开始暴露出性能问题,对生产的影响也越来越大,有时可能这些有问题的SQL就是整个系统性能的瓶颈。 SQL优化一般步骤1、通过慢查日志等定位那些执行效率较低的SQL语句2、explain 分析SQL的执行计划需要重点关注type、rows、filtered、extra。 type由上至下,效率越来越高
Extra
3、show profile 分析了解SQL执行的线程的状态及消耗的时间。
4、tracetrace分析优化器如何选择执行计划,通过trace文件能够进一步了解为什么优惠券选择A执行计划而不选择B执行计划。
5、确定问题并采用相应的措施
场景分析案例1、最左匹配索引
SQL语句
查询匹配从左往右匹配,要使用order_no走索引,必须查询条件携带shop_id或者索引( 案例2、隐式转换索引
SQL语句
隐式转换相当于在索引上做运算,会让索引失效。mobile是字符类型,使用了数字,应该使用字符串匹配,否则MySQL会用到隐式替换,导致索引失效。 案例3、大分页索引
SQL语句
对于大分页的场景,可以优先让产品优化需求,如果没有优化的,有如下两种优化方式,
案例4、in + order by索引
SQL语句
in查询在MySQL底层是通过n*m的方式去搜索,类似union,但是效率比union高。 处理方式,可以( 案例5、范围查询阻断,后续字段不能走索引索引
SQL语句
范围查询还有“IN、between” 案例6、不等于、不包含不能用到索引的快速搜索。(可以用到ICP)
在索引上,避免使用NOT、!=、<>、!<、!>、NOT EXISTS、NOT IN、NOT LIKE等 案例7、优化器选择不使用索引的情况如果要求访问的数据量很小,则优化器还是会选择辅助索引,但是当访问的数据占整个表中数据的蛮大一部分时(一般是20%左右),优化器会选择通过聚集索引来查找数据。
查询出所有未支付的订单,一般这种订单是很少的,即使建了索引,也没法使用索引。 案例8、复杂查询
如果是统计某些数据,可能改用数仓进行解决; 案例9、asc和desc混用
desc 和asc混用时会导致索引失效 案例10、大数据对于推送业务的数据存储,可能数据量会很大,如果在方案的选择上,最终选择存储在MySQL上,并且做7天等有效期的保存。 资料
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 2:26:37- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |