第一次进行高级条件查询之后的结果作为第二次搜索的基础,第二次针对某列再次进行条件查询

来源:2-8 使用 try finally 资源泄露隐患

奶茶三兄弟d

2020-09-15

图片描述

  1. 老师,如果所示,有这样的需求,在进行第一次条件查询之后的结果,
  2. 第二次可以继续对某列进行继续条件筛选查询,
  3. 由于这边获取的数据都是通过thrift调用的c++那边提供的,而不是直接从Mysql中获取,查询参数比较固定(基本属于查询全量的数据过来) ,老师,那这里的话,如果第一次筛选完之后,再进行第二次对某列的条件筛选的话,是不是让前端除了携带第一次的条件搜索参数之外还得继续带上第二次某列的筛选条件,然后我这边后端拿到第一次查询结果之后,进行二次列的筛选条件filter,然后返回给前端。
  4. 老师,这里的第一次结果可以缓存起来嘛,然后二次列筛选的时候,我只需要将第一次结果按照列筛选条件去filter就行,这样就另起一个接口,前端只传递第二次列的筛选条件即可!
  5. 老师,如果这个需求是你做的话,你会怎么去分析,然后选择什么方案去解决呢,谢谢!
写回答

1回答

张勤一

2020-09-16

奶茶三兄弟你好:

    首先来说,你这里的问题描述是比较模糊的,但是,我大概能够看懂你的意思。其实,你是说:用户可以在前面筛选请求结果的基础之上再次做结果的筛选(根据用户后续提供的查询条件)。那么,这类需求的解决方案相对来说是比较固定的:

    (1) 你需要知道,HTTP 请求是没有状态的,所以,每一次查询都应该是前端给你完整的查询请求,而不是分为 “第一次”、“第二次”,每一次请求都是独立的,你就是需要根据当前的查询请求写出对应的逻辑,获取结果,仅此而已;

    (2)这类需求,对结果缓存是非常少见的,因为,查询参数的变数很大,就比如说日期,到底有多少种变化、多少种组合呢?是按照乘积来算的,所以,缓存不仅价值不高,反而会浪费大量的存储空间,实在是没有必要

    (3)总结下来,前端给你什么查询请求,你就按照这个请求实时查询就可以(当然,有合适的索引肯定会加快检索的速度)


    我是勤一,致力于将这门课程的问答区打造为 Java 知识体系知识库,Java 知识体系 BBS!共同建造、维护这门课程,我需要每一个你!

2
0

Java实操避坑指南 SpringBoot/MySQL/Redis错误详解

掌握业务开发中各种类型的坑,,Java web开发领域通用

466 学习 · 204 问题

查看课程