目录

优化前

优化后


场景:数据库表两个字段组成唯一键,需要批量用唯一键查询记录

UNIQUE KEY `uk_channel_org` (`channel`, `org`),

优化前

for (ChannelOrg channelOrg : channelOrgList) {//循环中查询数据库ChannelOrgLevelConfigDO config = channelOrgLevelConfigService.getNode(channelOrg);//...省略
}

缺:循环中查询数据库,有大量IO,影响性能,不可控

优化后

//组合查询后,组装得到对应记录map
Map<ChannelOrg, ChannelOrgLevelConfigDO> channelOrgConfigMap = channelOrgLevelConfigService.getNodeMap(channelOrgList);//循环处理(避免循环查询数据库,大量IO影响性能)
for (ChannelOrg channelOrg : channelOrgList) {ChannelOrgLevelConfigDO config = channelOrgConfigMap.get(channelOrg);//...省略
}

优:避免循环中查询数据库,提高接口性能

sql实现

//sql 查询得到list
select * from pss_channel_org_level_config where (channel, org) in
<foreach close=")" collection="params" item="item" open="(" separator=",">(#{item.channel}, #{item.orgCode})
</foreach>

sql执行计划:命中唯一键索引

SQL组合查询:(字段1, 字段2) in ((v1, v2),(v3, v4))相关推荐

  1. sql基础查询 多个字段查询——去除重复——计算列——起别名

    -- 查询 名字 年龄 -- 查询语句 同时也是多个字段的查询 select 字段1 ,字段2...from 表名   这个语句查询什么就只会显示什么数据 SELECT      NAME ,-- 姓 ...

  2. sql 统计查询某一字段的某一个值的总条数

    查询某一字段的某一个值的总条数 比如:orderprogressno字段的值分别为1,2,3,4,那么就是查询值为1的总条数和值为2的总条数 select orderno,count(orderpro ...

  3. mysql存储过程判断多个条件语句_存储过程里多条件判断(SQL组合查询)

    我存储过程里想实现多个传入参数的判断,里面有7个传入参数条件. CREATE PROCEDURE sp_tbWasteSource_Search ( @sd   datetime,           ...

  4. sql server查询某一字段不重复的数据_初识数据库

    数据模型 层次模型 以上下级的层次关系来组织数据的一种方式,其数据结构类似一棵树: 网状模型 将每个数据节点与其他很多节点连接起来,其数据结构类似城市的交通网: 关系模型 将数据看做一个二维表格,数据 ...

  5. sql语句查询,多字段like模糊查询优化

    1.多字段like模糊查询优化: 最常见的写法: where a like '%xx%' or b like '%xx%' or c like '%xx%' 这种写法查询效率低,经过调查,下面的方法可 ...

  6. sql 语句 查询两个字段都相同的方法

    这是替代方法 先使用着 select * from ofgroup where groupId in (select groupId from ofgroup where  uid ='". ...

  7. SQL组合查询union

    对一个表执行多个查询,按一个查询返回数据: select 属性集合0 form 表0 where 逻辑组合0 union select 属性集合0form 表0 where 逻辑组合1 等价于 sel ...

  8. sql组合字段in查询

    前段时间看到了一个MYSQL数据库的sql的用法,是一个早就有的sql语法,但是从来没使用过,也没见过,当时就看了一下. 今天业务上有个需求刚好符合使用这种语法的情况,我就想去找找,结果忘记这个语法叫 ...

  9. 关系数据库SQL之高级数据查询:去重复、组合查询、连接查询、虚拟表

    前言 接上一篇关系数据库SQL之基本数据查询:子查询.分组查询.模糊查询,主要是关系型数据库基本数据查询.包括子查询.分组查询.聚合函数查询.模糊查询,本文是介绍一下关系型数据库几种高级数据查询SQL ...

最新文章

  1. Webservice开发之xsd中开发请求数据的响应接口
  2. 云游戏打破硬件限制,传输体验或成发展掣肘!
  3. Binding(二):控件关联和代码提升
  4. 11g java 驱动_Oracle 11g Java驱动包ojdbc6.jar安装到maven库,并查看jar具体版本号
  5. mysql按照日期先去重在分组_【巨杉数据库Sequoiadb】【咨询】【数据操作】【聚集查询】在执行聚集查询时,字符类型的字段能否按照实际内容进行分组去重...
  6. 原生JS大揭秘—数据类型
  7. 理解 Generator 的执行
  8. 简单叙述tcp/ip的工作原理和主要的协议_802.11协议精读3:CSMA/CD与CSMA/CA
  9. ###Tomcat目录介绍和基础
  10. nx零件库插件_3DSource企业自定义零件库插件
  11. 天翼去主机linux密码是什么意思,useradmin天翼初始密码 密码都是admin
  12. [转载]使用 JDBC 连接不同版本 DB2 数据库的兼容性问题
  13. 计算机图形学 :中点画圆法
  14. 准备写个linux下的千千静听
  15. Excel为图表指定横向坐标数据
  16. Spring中AOP的Introductions使用介绍
  17. 数据科学家大减价:一小时只收30美元
  18. 双控专业就业机器人_东北大学自动化双控考研专业就业方向
  19. ORA-21561: OID generation failed
  20. 基于opencv的人脸识别和检测

热门文章

  1. Python学习之---求100以内素数的八种解法
  2. MySQL数据库之全量+增量+二进制日志的备份与恢复
  3. Android 遗忘率贼高的方法和代码汇总
  4. Python-Django毕业设计基于微信小程序的网上购物系统(程序+Lw)
  5. docker mongo exited with code 100
  6. 软件工程面向对象方法画图题_软件工程试题(1)
  7. 一堂难忘的计算机课作文,记一堂电脑课作文
  8. 银河麒麟V10安装MySQL5.7
  9. 初识Kafka-概念速览|安装与配置—《Kafka权威指南》笔记
  10. Android转Java两年,还不会写SQL?