列表查询SQL语句改造
一个经常遇到到的场景,就是查询列表数据,列表数据由多张表构成
最简单的查询方法是先写一个查询单条数据的方法,比如这个方法中要查询十张表;
然后一个循环调用查单条的方法,这种逻辑上理解是比较简单的(因为这样不会有比较复杂SQL语句,也不用连表查询,很少会产生慢查询)
但是这里面会产生较多的SQL语句查询,如果一个列表有10条数据,那么产生的SQL查询语句就是 10*10条
改造前

改造后

** 两个查询案例非一模一样的场景下产生,只为形象的对比产生的SQL语句数量
通过in查询改造后, 尽量不连表查询,都是通过in查询来解决,即使改造了,一次请求还是有过多的数据表查询,一个请求需要查询10几张表,这个时候就该缓存出场了,缓存能够很好的解决重复查询的困扰,但是又将系统的复杂度提升了一个档次
存入缓存容易,
销毁缓存就变得麻烦了,
个人觉得比较好的使用机制是:
接口层面直接从缓存中拿结构化好的数据,如果拿不到就直接去数据库查询,查回来的数据结构化好返回给用户,顺便把数据通过MQ消息给缓存管理服务,当出现数据变动时,MQ消息通知缓存管理服务直接删掉(或者发送格式化好的数据给MQ直接替换或者更新),但是实现起来需要对接的系统也就多了,缓存想做好还需要下细功夫
列表查询SQL语句改造的更多相关文章
- 查询sql语句所花时间
		--1:下面这种是SQL Server中比较简单的查询SQL语句执行时间方法,通过查询前的时间和查询后的时间差来计算的: declare @begin_date datetime declare @e ... 
- 跨服务器查询sql语句样例
		若2个数据库在同一台机器上:insert into DataBase_A..Table1(col1,col2,col3----)select col11,col22,col33-- from Data ... 
- Django查询SQL语句
		Django查询SQL语句 # 1 res=models.Book.objects.all() # print(res)#<QuerySet [<Book: Book object> ... 
- 分页用到的子查询sql语句
		说明(2017-8-31 23:30:22): 1. 分页用到的子查询sql语句 select * from(select *,ROW_NUMBER() over(order by id)as num ... 
- 多表查询sql语句
		多表查询sql语句 1 --解锁SCOTT用户 2 alter user scott account unlock 3 --检索指定的列 4 select job,ename,empno from e ... 
- 跨服务器查询sql语句样例(转)
		若2个数据库在同一台机器上: insert into DataBase_A..Table1(col1,col2,col3----) select col11,col22,col33-- from Da ... 
- 数据库查询SQL语句的时候如何写会效率更高?
		引言 以前刚开始做项目的时候,开发经验尚浅,遇到问题需求只要把结果查询出来就行,至于查询的效率可能就没有太多考虑,数据少的时候还好,数据一多,效率问题就显现出来了.每次遇到查询比较慢时,项目经理就会问 ... 
- asp下实现多条件模糊查询SQL语句
		常写一个简单的模糊查询的SQL语句格式可以如下例: sql="select * from 表名 where 字段名 like ’%" & request.form(&quo ... 
- 巧用DISPLAY_AWR函数与dba_hist_sqlstat结合查询SQL语句在指定节点指定时间范围内的历史执行计划
		1.问题 通过调用dbms_xplan包中DISPLAY_AWR函数(DBMS_XPLAN.DISPLAY_AWR)可以从AWR数据中查看到SQL语句的历史执行计划,但是,DISPLAY ... 
随机推荐
- 20155201 2016-2017-2 《Java程序设计》第八周学习总结
			20155201 2016-2017-2 <Java程序设计>第八周学习总结 教材学习内容总结 第十四章 NIO与NIO2 相对于串流输入/输出使用InputSteam,OutputStr ... 
- 20145325张梓靖 《Java程序设计》第9周学习总结
			20145325张梓靖 <Java程序设计>第9周学习总结 教材学习内容总结 JDBC Java语言访问数据库的一种规范,是一套API.JDBC (Java Database Connec ... 
- [微信开发] - weixin4j获取网页授权后的code进而获取用户信息
			weixin4j封装好的SnsComponent组件中的方法可以执行该步骤 WeixinUserInfoController : package com.baigehuidi.demo.control ... 
- window下安装redis报错: creating server tcp listening socket 127.0.0.1:6379: bind No error
			window下安装redis报错: creating server tcp listening socket 127.0.0.1:6379: bind No error 解决: 如果没有配置环境,在安 ... 
- 雷林鹏分享:Ruby 面向对象
			Ruby 面向对象 Ruby 是纯面向对象的语言,Ruby 中的一切都是以对象的形式出现.Ruby 中的每个值都是一个对象,即使是最原始的东西:字符串.数字,甚至连 true 和 false 都是对象 ... 
- Django配置让其他电脑访问网站(包括:修改IP和端口)
			http://blog.sina.com.cn/s/blog_9c5364110101fyk7.html 
- ✅问题:Rails.ajax的data不支持{}hash格式。必须使用string。 dataType的格式。
			Rails.ajax({ url: url, type: "PATCH", data: {"post":{"category_id":thi ... 
- 局域网内web地图的简单实现
			首先,我先说一下这次的主要目的.我们的想法是在不连互联网的局域网中搭起来一个地图服务,类似于百度地图的网页版本,功能最少要有看地图.放缩.标记.批量标记.实时经纬度坐标.这个东西还是让我费了一番力气( ... 
- LINUX QQ
			查询龙井QQ http://www.longene.org/forum/viewtopic.php?f=6&t=4700 
- 用django发送异步邮件
			太阳底下没有新鲜事,github是一个神奇的地方,你有什么想法,需求,点子.其实别人早就想到,而且也已经做到. 所以不要高估自己,有什么想法还是GITHUB一下,免得成了井底之娃. 这几天一直在研究p ... 
