当前位置: 首页 > news >正文

关联查询(left/right)优化

核心要点:

  • 查询条件加索引
  • 关联条件加索引(即使是分别根据某些条件查询两个表的结果作为两个虚表关联查询,关联条件也要加索引
  • 尽量不使用select * ,只查需要的列
  • 尽量减少回表

查询示例sql:

SELECT * FROM 
(SELECT * FROM a WHERE a.len1='' AND a.len2='')a1 
LEFT JOIN 
(SELECT * FROM b WHERE b.len1='' AND b.len2='')b1 
ON a1.len=b1.len and a1.len3=b1.len3 and a1.len4=b1.len4

对于这种查询,我们一眼就可以看出来要给a表和b表的len1和len2两列加聚合索引,然后用explain关键字一查询发现都用到了索引,优化思路一下就没有了。

对于这个sql,我们还需要给a表和b表的len、len3和len4三列加聚合索引

这个sql还可以写成

SELECT a.*, b.* 
FROM a 
LEFT JOIN b ON a.len = b.len 
AND a.len3 = b.len3 
AND a.len4 = b.len4
AND b.len1 = '' 
AND b.len2 = ''
WHERE a.len1 = '' 
AND a.len2 = ''

SELECT a.*, b.* 
FROM a 
LEFT JOIN b ON a.len = b.len 
AND a.len3 = b.len3 
AND a.len4 = b.len4
WHERE a.len1 = '' 
AND a.len2 = ''
AND (b.id IS NULL OR (b.len1 = '' AND b.len2 = ''))

实践过程中,大家可以尝试多种写法,使用explain关键字进行分析,看那种方式更高效。

http://www.dtcms.com/a/340536.html

相关文章:

  • 50GHz+示波器:精准捕捉超高频信号
  • 激光雷达点云平面拟合与泊松重建对比分析
  • 【ElasticSearch】ElasticSearch Overview
  • Day 40:训练和测试的规范写法
  • 【深度学习新浪潮】空天地数据融合技术在城市三维重建中的应用
  • 学习嵌入式的第二十二天——数据结构——双向链表
  • 前端图片压缩实战:体积直降 80%,LCP 提升 2 倍
  • 数字化图书管理系统设计实践(java)
  • 【考研408数据结构-04】 栈与队列:受限的线性表
  • Java FTPClient详解:高效文件传输指南
  • 用好 Elasticsearch Ruby 传输层elastic-transport
  • Redisson3.14.1及之后连接阿里云redis代理模式,使用分布式锁:ERR unknown command ‘WAIT‘
  • python中selenium怎么使用
  • KUKA机器人KUKA.ConveyorTech传送带跟踪程序举例解析
  • Python采集易贝(eBay)商品详情API接口,json数据返回
  • 今日科技风向|从AI芯片定制到阅兵高科技展示——聚焦技术前沿洞察
  • MySQL 数据库知识点与注意事项总结
  • spring整合JUnit
  • 阿里云ECS服务器的公网IP地址
  • WPF Alert弹框控件 - 完全使用指南
  • Non-stationary Diffusion For Probabilistic Time Series Forecasting论文阅读笔记
  • LoRa 网关与节点组网方案
  • 基于Java虚拟线程的高并发作业执行框架设计与性能优化实践指南
  • 【Bluedroid】A2DP Source 端会话启动流程与核心机制解析(btif_a2dp_source_start_session)
  • UIGestureRecognizer 各个子类以及其作用
  • iOS开发之UICollectionView为什么需要配合UICollectionViewFlowLayout使用
  • 氯化钇:科技与高性能材料的核心元素
  • C++高频知识点(三十)
  • 嵌入式音频开发(3)- AudioService核心功能
  • 机器学习数学基础与商业实践指南:从统计显著性到预测能力的认知升级