| |
|
开发:
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 优化有哪些技巧? |
一、前言MySQL 相信大家一定都不陌生,但是不陌生不一定会用! 会用不一定能用好! 今天,就带大家复习一个高频面试考点,SQL 优化有哪些技巧? 当然这个还是非常有实用价值的,工作中你也一定用的上。如果应用得当,升职加薪,指日可待 二、创建索引一定要记得创建索引,创建索引,创建索引 重要的事说三遍! 执行没有索引的 SQL 语句,肯定要走全表扫描,慢是肯定的。 这种查询毫无疑问是一个慢 SQL 查询。 那么问题来了,是不是要收集所有的 where 查询条件,然后针对所有的组合都创建索引呢?
MySQL 为了提升数据查询速率,采用 B+ 树结构,通过 本着 阿里巴巴的开发者手册建议,单表索引数量控制在5个以内,组合索引字段数不允许超过5个 其他建议:
三、避免索引失效?不要以为有了索引,就万事大吉。 殊不知, 常见的索引失效的场景有哪些?
?四、锁粒度MySQL 的存储引擎分为两大类:MyISAM ?和 InnoDB 。MyISAM 支持表锁;InnoDB 支持行锁和表锁 更新操作时,为了保证表数据的准确性,通常会加锁,为了提高系统的高并发能力,我们通常建议采用? 行锁可能会升级为表锁,有哪些场景呢?
?五、分页查询优化如果要开发一个列表展示页面并支持翻页时,我们通常会这样写 SQL
随着翻页的深度加大,? 看似只返回了 10 条数据,但数据库引擎需要查询 10010 条记录,然后将前面的 10000 条丢弃,最终只返回最后的 10 条记录,性能可想而知 针对这个问题,我们通常有另一种解决方案: 先定位到上一次分页的最大 id,然后对 id 做条件索引查询。由于数据库的索引采用 B+ 树结构,这样可以一步到位
任何事情,有利就有弊 这种翻页方式只支持? 上图是淘宝的商品搜索列表,为了用户体验更好,采用的也是? 为了避免翻页过深,影响性能,产品交互上做了一些取舍,对总页数做了限制,最多支持 100 页。 方案二:采用子查询
将原来的单 SQL 查询拆成两步:
阿里的规约手册也有对应描述: ? 六、避免select?*?反面案例:
我们知道,MySQL 创建表后,具体的行数据存储在主键索引(属于聚簇索引)的叶子节点。 二级索引属于非聚簇索引,其叶子节点存储的是 select * 的查询过程:
所以,我们需要罗列清楚必须的查询字段,且字段尽量在? 七、EXPLAIN 分析 SQL 执行计划授人以鱼不如授人以渔 除了知晓常见的不规范 SQL 写法,在开发过程中,避免踩坑 我们还应知道,出现了慢 SQL 该如何排查、优化 实验安排起来 创建表
插入记录:
比如下面的语句,我们看是否使用了索引,可以通过?
接下来,我们来逐一来说明每个字段的含义
八、EShow Profile分析SQL执行性能?Show Profile 与 EXPLAIN 的区别是,前者主要是在外围分析;后者则是深入到 MySQL 内核,从执行线程的状态和时间来分析。 MySQL 是在 5.0.37 版本之后才支持 Show Profile ,
显示为空,说明profiles功能是关闭的。 通过下面命令开启
? 获取? ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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/23 16:32:11- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |