原因

  1. 查询语句写得烂
  2. 索引失效
  3. 关联查询过多(设计缺陷)
  4. 服务器调优及各个参数设置(缓冲、线程数等)

Join查询的SQL执行顺序

  1. 手写
SELECT <select_list>
FROM <left_table><join_type>
JOIN <right_table> ON <join_condition>
WHERE <where_condition>
GROUP BY <group_by_list>
HAVING <having_condition>
ORDER BY <order_by_condition>
LIMIT <limit_number>
  1. 机读
FROM <left_table>
ON <join_condition>
<join_type> JOIN <right_table>
WHERE <where_condition>
GROUP BY <group_by_list>
HAVING <having_condition>
SELECT
DISTINCT <select_list>
ORDER BY <order_by_condition>
LIMIT <limit_number>
  1. 总结
    共七种Join
    左连接: SELECT <select_list> FROM TableA A LEFT JOIN TableB B ON A.Key=B.Key;

右链接: SELECT <select_list> FROM TableA A RIGHT JOIN TableB B ON A.Key=B.Key;

内连接: SELECT <select_list> FROM TableA A INNER JOIN TableB B ON A.Key=B.Key;

只有A: SELECT <select_list> FROM TableA A LEFT JOIN TableB B ON A.Key=B.Key WHERE B.Key IS NULL;

只有B: SELECT <select_list> FROM TableA A RIGHT JOIN TableB B ON A.Key=B.Key WHERE B.Key IS NULL;

全连接: SELECT <select_list> FROM TableA A FULL OUTER JOIN TableB B ON A.Key=B.Key;

A、B各自独有: SELECT <select_list> FROM TableA A FULL OUTER JOIN TableB B ON A.Key=B.Key WHERE A.Key IS NULL OR B.Key IS NULL;

MySQL没有FULL OUTER语法:
SELECT <select_list> FROM TableA A LEFT JOIN TableB B ON A.Key = B.Key WHERE B.Key IS NULL
union
SELECT <select_list> FROM TableA A RIGHT JOIN TableB B ON A.Key = B.Key WHERE A.Key IS NULL;

SQL性能下降原因及Join查询相关推荐

  1. 4.性能下降原因和常见的Join查询

    性能下降 SQL慢,执行时间长,等待时间长 1.查询语句写的烂 2.索引失效 单值索引失效 和 复合索引失效 3.关联查询太多join(设计缺陷或不得已的需求) 4.服务器调优及各个参数设置(缓冲.线 ...

  2. SQL性能第2篇:查询分析和访问路径制定

    女主宣言 在SQL性能概述的第一部分中,我们研究了关系优化及其影响因素.在今天的文章中,我们将注意力转向查询分析以及SQL转换为可执行代码的方式.希望对大家在SQL性能优化方面有所帮助. PS:丰富的 ...

  3. 一条SQL完成跨数据库实例Join查询

    2019独角兽企业重金招聘Python工程师标准>>> 背景 随着业务复杂程度的提高.数据规模的增长,越来越多的公司选择对其在线业务数据库进行垂直或水平拆分,甚至选择不同的数据库类型 ...

  4. sql重复数据只保留一条_一条SQL完成跨数据库实例Join查询

    背景 随着业务复杂程度的提高.数据规模的增长,越来越多的公司选择对其在线业务数据库进行垂直或水平拆分,甚至选择不同的数据库类型以满足其业务需求.原本在同一数据库实例里就能实现的SQL查询,现在需要跨多 ...

  5. Sql性能优化之LIKE模糊查询

    我们在写sql的时候应该尽量避免在一个复杂查询里面使用 LIKE '%parm1%'-- 由于parm1前面用到了"%",因此该查询必然走全表扫描,导致相关列的索引无法使用,除非必 ...

  6. where条件中等值连接使用双竖杠影响SQL性能

    [SQL性能下降原因] 如果表t1和t2 字段a,b 上有索引并且表数据量很大.这种写法t1.a || t1.b || t1.c = t2.a || t2.b || t2.c 是不会走索引的.应该写成 ...

  7. 分布式数据库 Join 查询设计与实现浅析 | 京东云技术团队

    相对于单例数据库的查询操作,分布式数据查询会有很多技术难题. 本文记录 Mysql 分库分表 和 Elasticsearch Join 查询的实现思路,了解分布式场景数据处理的设计方案. 文章从常用的 ...

  8. Win11让AMD很受伤:CPU游戏性能下降15%,官方建议暂时别升级

    晓查 发自 凹非寺 量子位 报道 | 公众号 QbitAI 在这个国庆假期,微软正式发布了Windows 11系统更新. 想必很多小伙伴已经迫不及待升级了,但是AMD告诉你:请先别着急. 今天,AMD ...

  9. mysql的in查询参数限制,多少数据量会造成性能下降?什么时候创建临时表合适?

    文章目录 一.前言 二.本地配置以及生成测试数据 1.本地mysql配置 (1)mysql版本 (2)本地sql长度限制 2.创建表和测试数据(50W) (1)创建表语句 (2)循环插入50W条数据 ...

最新文章

  1. Swift与LLVM-Clang原理与示例
  2. wordpress中remove_action、add_action、 do_action()的hook钩子都有哪些
  3. C++拷贝构造函数(深拷贝,浅拷贝)
  4. Boost:字符串替换的测试程序
  5. linux非权限安装bioperl,bioperl的安装
  6. ios html 全选文本框,【前端】IOS input输入框按删除键删除字符,删除最后一个字符时,概率性出现光标前面多余一个字符...
  7. 视达配色教程2 好的配色的第一条件是什么
  8. 我的Linux生涯之Mysql:Day01[Mysql基本使用]例
  9. Python实现Excel与XML之间的转换
  10. 奶爸业余单片机学习之:C语言基础——for循环及for嵌套
  11. 华为数字化转型步骤、方法和目标
  12. 【四二学堂】基于unicloud的跨平台项目-华夏画苑APP
  13. 实话实说,现在的结婚,真就是走个形式!
  14. NVIDIA VIDEO ENCODER(NVENC)7.0.1 SDK 编码流程 学习笔记
  15. 隐藏17年的Firefox文件窃取漏洞,可结合WhatsApp钓鱼窃取文件
  16. FIPS 140-3与140-2的差异-5
  17. (三十)AO和GO剖析
  18. pyqt5登录界面设计——模仿qq登录界面,可登录注册(数据库)
  19. java获取指定日期的下一天
  20. MATLAB多项式符号运算

热门文章

  1. 2021-2027年中国透明熔融石英管行业市场全景调查及投资前景分析报告
  2. java 原子量_Java原子量 - Rickxue的个人空间 - OSCHINA - 中文开源技术交流社区
  3. 2022-2028年中国超韧尼龙行业市场调查分析及未来前景分析报告
  4. Python字节码介绍
  5. MindInsight训练可视整体设计介绍
  6. x86 cpu卷积网络的自动调谐
  7. 2020年人工智能汽车将出台多项标准
  8. Usb-type-C端口实现的挑战与设计方案
  9. 2021年大数据Flink(十八):Flink Window操作
  10. Laravel和Thinkphp有什么区别,哪个框架好用