列表查询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 ...
随机推荐
- awk处理nmap扫描结果
接到个任务,要对大量的主机ip进行扫描: 扫描加过滤脚本贴到底下 #!/bin/bash ### use nmap scan aliyun echo "********Start scan* ...
- Migrating from Spring 3 to Spring 4 - org.springframework.scheduling.quartz.CronTriggerBean
I'm trying to migrate from spring 3.0.5 to spring 4.1.X . Spring 3 has Class named as "org.spri ...
- 安装Git【转】
本文转载自:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 最早Git是在Linu ...
- [BZOJ1901]Dynamic Rankings
Description 给定一个含有n个数的序列a[1],a[2],a[3]……a[n],程序必须回答这样的询问:对于给定的i,j,k,在a[i],a[i+1 ],a[i+2]……a[j]中第k小的数 ...
- div框选中状态,倒三角样式
html代码: <html> <head> <style> #triangle-bottomright { width:0; height: 0; display: ...
- linux进程概论
1操作系统几大模块 进程管理,进程调度,进程间通讯机制,内存管理,中断异常处理,文件系统,I/O系统,网网络部分. 2操作系统的目的 管理硬件设备,为上层应用程序提供良好的执行环境. 3linux系统 ...
- HDU1166 敌兵布阵_线段树
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- 208. Implement Trie (Prefix Tree) -- 键树
Implement a trie with insert, search, and startsWith methods. Note:You may assume that all inputs ar ...
- bzoj2163
题解: 拆点网络流 然后用总和-最大流 代码: #include<iostream> #include<cstring> #include<cstdio> #inc ...
- 用halcon提取衣服徽章
收到一封email,有个学员求助去除衣服上纹理的干扰,然后提取衣服上徽章的边缘的方法. 我想他肯定是个很努力上进的boy,在求助以前也许已经试过各种方法,通过二值化不断的调试阈值, 寻找各种边 ...