MySQL优化(7):SELECT 之 Hash Join优化
从 MySQL 8.0.18 开始,MySQL 对每个连接(join)具有等连接条件的任何查询使用哈希连接(Hash Join)。哈希连接通常比以前版本的 MySQL 中使用的块嵌套循环算法更快。
从 MySQL 8.0.18 开始,MySQL 对每个连接(join)具有等连接条件的任何查询使用哈希连接(Hash Join)。哈希连接通常比以前版本的 MySQL 中使用的块嵌套循环算法更快。
索引合并访问方法检索具有多个范围扫描的行并将它们的结果合并为一个。
此访问方法仅合并来自单个表的索引扫描,而不是跨多个表的扫描。 合并可以产生其底层扫描的联合、交集或交集。
范围访问方法使用单个索引来检索包含在一个或多个索引值区间内的表行的子集。
它可用于 single-part 或 multiple-part 索引。 以下部分描述了优化器使用范围访问的条件。
本篇讨论可用于处理 WHERE 子句的优化。 这些示例使用 SELECT 语句,但相同的优化适用于 DELETE 和 UPDATE 语句中的 WHERE 子句。
数据库应用程序的核心逻辑是通过 SQL 语句执行的,无论是通过解释器直接发出的,还是通过API在后台提交的。
查询以 SELECT 语句的形式执行数据库中的所有查找操作。调整这些语句是重中之重,无论是实现动态网页的次秒响应时间,还是缩短生成大量夜间报告的时间。
df
:disk free,显示目前在 Linux 文件系统磁盘使用情况统计。
du
:disk usage,显示目录或文件的大小,会显示指定的目录或文件所占用的磁盘空间。
free
:显示内存使用情况,包括实体内存,虚拟的交换文件内存,共享内存,缓冲区等。
在项目中需要做个报表统计,需要做多表联查,同一个 SQL 语句 Where 字段相同,但条件值不同,索引使用情况仅然不同,还存在索引失效的情况,使用强制索引与是否一起使用分页对查询效率的影响还存在关联影响。
于是做了如下分析。
MySQL优化篇系列介绍 MySQL 性能的优化并提供示例。优化涉及在多个级别上配置、调优和测量性能。
根据个人所在的工作角色(开发人员、DBA 或两者的组合),可以在单个 SQL 语句、整个应用程序、单个数据库服务器或多个联网数据库服务器的级别进行优化。
有时,可以主动并提前计划性能,而有时可能会在出现问题后对配置或代码问题进行故障排除。
优化 CPU 和内存使用还可以提高可扩展性,允许数据库处理更多负载而不会减慢速度。
中介者模式是把多对象之间存在复杂的网状结构的交互关系,改为 星形结构,这样大大降低对之间的的耦合,所有对象只通过 中介者 与目标对象联系。
中介者例子:人才交流中心,房产中介,WTO(世界贸易组织), MVC框架中的 C(控制器)就是 M(模型)和 V(视图)的中介者。