大量多级分类数据的获取、缓存、搜索查询 怎么设计最快 ?

1.数据量大
2.多级分类
3.首先要获取所有数据
4.获取到所有数据后 有搜索功能(搜索到的数据不管几级都要获取到它的所有父级和子级 存在和搜索名称相符合的标为红色)

现在我为了开始获取全部数据和后期搜索都用一个方法 我就获取到所有分类id和其父级子集放在一起 然后比如现在不是搜索 开始是全部数据肯定很多重复的 我去重 然后通过这些id去获取所有信息 最后再循环改变搜索相符的字体颜色(和搜索公用) 最后再循环组合成树状结构数据

因为数据量大的话 老循环我感觉可能会慢

怎么优化下 搜索和初始化所有数据分开写俩个方法 还是能怎么弄呢?

还有就是我加了缓存 这样每次初始化就不用去从新查了 直接拿缓存 但是搜索的话还是要去查 当然搜索可能数据量小 还好些 但是循环次数过多啊 缓存有办法进行二次筛选吗?thinkphp框架的S方法缓存的
感谢分享

大量多级分类数据的获取、缓存、搜索查询 怎么设计最快 ? >> mysql

这个答案描述的挺清楚的:
http://www.goodpm.net/postreply/mysql/1010000007441554/大量多级分类数据的获取缓存搜索查询怎么设计最快.html

时间: 2024-08-02 18:25:42

大量多级分类数据的获取、缓存、搜索查询 怎么设计最快 ?的相关文章

【转载】Hibernate---在Hibernate中获取数据方式与缓存使用

原文地址:http://www.blogjava.net/pengpenglin/archive/2010/03/15/315440.html Hibernate获取数据的方式有不同的几种,其与缓存结合使用的效果也不尽相同,而Hibernate中具体怎么使用缓存其实是我们很关心的一个问题,直接涉及到性能方面. 缓存在Hibernate中主要有三个方面:一级缓存.二级缓存和查询缓存 ①一级缓存在Hibernate中对应的为session范围的缓存,也就是当session关闭时缓存即被清除,一级缓存

数据库多级分类代码(MSSQL存储过程版)

说明 相信多级分类在任何一个信息系统中都会用到,网上也能找到很多版本,下面这个是基于MSSQL存储过程版的, 手上还有VB跟C#版的,不过这几年数据库一直用MSSQL,编程语言却从VBScript到C#又到PB, 搞到现在这套分类代码分别用VB.C#.PB实现了一遍,浪费了不少时间,NND神马多数据库啊!!!哥被忽悠了. 分类采用前缀编码的方式,编码使用字符串类型的,当然也有使用二进制实现的牛人^_^. 表结构说明(表Category,ClassId,ClassName,Code 为分类相关字段

iOS开发:一个高仿美团的团购ipad客户端的设计和实现(功能:根据拼音进行检索并展示数据,离线缓存团购数据,浏览记录与收藏记录的批量删除等)

大致花了一个月时间,利用各种空闲时间,将这个客户端实现了,在这里主要是想记录下,设计的大体思路以及实现过程中遇到的坑...... 这个项目的github地址:https://github.com/wzpziyi1/GroupPurchase 主要实现的功能,用UICollectionViewController展示团购数据,根据拼音进行检索并展示数据,离线缓存团购数据,浏览记录与收藏记录的批量删除,友盟分享的集成,利用UIView+AutoLayout写布局,实现地图定位.自定义大头针等 整个项

如何从统计中批量获取BD搜索关键词及对应的入口页面?

前面我们介绍了通过cnzz的访问明细获取到搜索关键词及对应的入口页面,但是从BD搜索进来的关键词无法完整显示,只能呈现一些bd图片搜索的关键词,这是因为百度宣布从去年5月开始逐渐取消了referer关键词显示,保护站点流量关键词数据信息,第三方将不再可以轻易地窃取到流量关键词,令站点数据更加私密化.站长需要获得网站流量关键词时,可以使用百度站长平台提供的搜索关键词工具或者百度统计相关功能进行查询.是不是有点垄断的意味呢?没办法,国内的市场份额摆在那.当然你也可以针对其他搜索引擎做专门的优化.从统

【阿里云产品公测】大数据下精确快速搜索OpenSearch

[阿里云产品公测]大数据下精确快速搜索OpenSearch 作者:阿里云用户小柒2012 相信做过一两个项目的人都会遇到上级要求做一个类似百度或者谷歌的站内搜索功能.传统的sql查询只能使用like 或者FIND_IN_SET来实现.后者性能稍微好点但是必须要逗号分隔才可以实现匹配.甚至多条件的话还可能用到OR这是极影响系统性能的. 最近公司项目需要.主要是系统查询缓慢.并且查询精度不敢恭维.一开始想到的是Lucene 毕竟是一个开放源代码的全文检索引擎工具包 并且官方还在持续更新中.当时闲暇时

android获取缓存大小和清除缓存

package com.jianong.xmtt.util; import android.content.Context; import android.os.Environment; import java.io.File; import java.math.BigDecimal; /** * Created by hgl on 2016/6/23. */ public class DataCleanManager { /** * 获取缓存大小 * @param context * @ret

XHNetworkCache,一行代码将请求数据写入磁盘缓存

XHNetworkCache 版本记录(持续更新)2016.07.01 Version 1.1(更新) 1.增加手动清除缓存接口 2.增加获取缓存大小接口 2016.06.24 Version 1.0(发布)使用方法:1.写入 [Objective-C] 查看源文件 复制代码 ? 1 2 3 //将数据写入磁盘缓存(参数1:服务器返回的JSON数据, 参数2:数据请求URL) //[按APP版本号缓存,不同版本APP,同一接口缓存数据互不干扰] [XHNetworkCache saveJsonR

SQL处理多级分类,查询结果呈树形结构

对于多级分类常规的处理方法,很多程序员可能是用程序先读取一级分类记录,然后通过一级分类循环读取下面的子分类 这样处理的弊端是:如果数据量大,子分类很多,达到4级以上,这方法处理极端占用数据库连接池 对性能影响很大. 如果用SQL下面的CTE递归处理的话,一次性就能把结果给查询出来,而且性能很不错 比用程序处理(数据量很大的情况),临时表性能更好,更方便 with area as(select *,id px,cast(id as nvarchar(4000)) px2 from region w

EXCEL中多级分类汇总空白字段填充

使用场景,多级分类汇总后,在汇总的字段中显示空白,这样对我们直接取值做表带来十分不更(假像有5000条记录,1000条汇总项) 相关技术,INDIRECT函数,单元格定位功能. 在数据区域外任意一个单元格编辑好INDIRECT函数,=INDIRECT(ADDRESS(ROW()-1,COLUMN(),4)),如下图 先选择好上面编辑好函数的单元格,并复制,接下来选择好需要填充的空白字段,再时行定位操作,如下图          选择好空白单元格后,直接按下ctrl+v,如下图完工. 效果图