大量多级分类数据的获取、缓存、搜索查询 怎么设计最快 ?
1.数据量大
2.多级分类
3.首先要获取所有数据
4.获取到所有数据后 有搜索功能(搜索到的数据不管几级都要获取到它的所有父级和子级 存在和搜索名称相符合的标为红色)
现在我为了开始获取全部数据和后期搜索都用一个方法 我就获取到所有分类id和其父级子集放在一起 然后比如现在不是搜索 开始是全部数据肯定很多重复的 我去重 然后通过这些id去获取所有信息 最后再循环改变搜索相符的字体颜色(和搜索公用) 最后再循环组合成树状结构数据
因为数据量大的话 老循环我感觉可能会慢
怎么优化下 搜索和初始化所有数据分开写俩个方法 还是能怎么弄呢?
还有就是我加了缓存 这样每次初始化就不用去从新查了 直接拿缓存 但是搜索的话还是要去查 当然搜索可能数据量小 还好些 但是循环次数过多啊 缓存有办法进行二次筛选吗?thinkphp框架的S方法缓存的
感谢分享
回复内容:
1.数据量大
2.多级分类
3.首先要获取所有数据
4.获取到所有数据后 有搜索功能(搜索到的数据不管几级都要获取到它的所有父级和子级 存在和搜索名称相符合的标为红色)
现在我为了开始获取全部数据和后期搜索都用一个方法 我就获取到所有分类id和其父级子集放在一起 然后比如现在不是搜索 开始是全部数据肯定很多重复的 我去重 然后通过这些id去获取所有信息 最后再循环改变搜索相符的字体颜色(和搜索公用) 最后再循环组合成树状结构数据
因为数据量大的话 老循环我感觉可能会慢
怎么优化下 搜索和初始化所有数据分开写俩个方法 还是能怎么弄呢?
还有就是我加了缓存 这样每次初始化就不用去从新查了 直接拿缓存 但是搜索的话还是要去查 当然搜索可能数据量小 还好些 但是循环次数过多啊 缓存有办法进行二次筛选吗?thinkphp框架的S方法缓存的
感谢分享
不要感觉, 循环大多数情况下, 相对于数据库查询来说是快了几个数量级的, 除非你用循环去查数据库了
大多数情况下, select ... in并且命中主键或者索引的, 结果集在只是几百个以内的, 效率还是可以接受的, 你可以结合你的实际情况运用
真的数据量大, 筛选条件又多, 又有分词搜索的情况下请考虑上搜索引擎, ElasticSearch, Sphinx等等

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

MySQL适合初学者使用,因为它安装简单、功能强大且易于管理数据。1.安装和配置简单,适用于多种操作系统。2.支持基本操作如创建数据库和表、插入、查询、更新和删除数据。3.提供高级功能如JOIN操作和子查询。4.可以通过索引、查询优化和分表分区来提升性能。5.支持备份、恢复和安全措施,确保数据的安全和一致性。

使用 Navicat Premium 创建数据库:连接到数据库服务器并输入连接参数。右键单击服务器并选择“创建数据库”。输入新数据库的名称和指定字符集和排序规则。连接到新数据库并在“对象浏览器”中创建表。右键单击表并选择“插入数据”来插入数据。

MySQL是一个开源的关系型数据库管理系统。1)创建数据库和表:使用CREATEDATABASE和CREATETABLE命令。2)基本操作:INSERT、UPDATE、DELETE和SELECT。3)高级操作:JOIN、子查询和事务处理。4)调试技巧:检查语法、数据类型和权限。5)优化建议:使用索引、避免SELECT*和使用事务。

在 Navicat 中执行 SQL 的步骤:连接到数据库。创建 SQL 编辑器窗口。编写 SQL 查询或脚本。单击“运行”按钮执行查询或脚本。查看结果(如果执行查询的话)。

Navicat 无法连接数据库的常见原因及其解决方法:1. 检查服务器运行状态;2. 核对连接信息;3. 调整防火墙设置;4. 配置远程访问;5. 排除网络问题;6. 检查权限;7. 保障版本兼容性;8. 排除其他可能性。

可在 Navicat 中通过以下步骤新建 MySQL 连接:打开应用程序并选择“新建连接”(Ctrl N)。选择“MySQL”作为连接类型。输入主机名/IP 地址、端口、用户名和密码。(可选)配置高级选项。保存连接并输入连接名称。

Navicat 连接数据库时常见的错误及解决方案:用户名或密码错误(Error 1045)防火墙阻止连接(Error 2003)连接超时(Error 10060)无法使用套接字连接(Error 1042)SSL 连接错误(Error 10055)连接尝试过多导致主机被阻止(Error 1129)数据库不存在(Error 1049)没有权限连接到数据库(Error 1000)

PHP的未来将通过适应新技术趋势和引入创新特性来实现:1)适应云计算、容器化和微服务架构,支持Docker和Kubernetes;2)引入JIT编译器和枚举类型,提升性能和数据处理效率;3)持续优化性能和推广最佳实践。
