• 技术文章 >后端开发 >php教程

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

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

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

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

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

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

    回复内容:

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

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

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

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

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

    1. 不要感觉, 循环大多数情况下, 相对于数据库查询来说是快了几个数量级的, 除非你用循环去查数据库了

    2. 大多数情况下, select ... in并且命中主键或者索引的, 结果集在只是几百个以内的, 效率还是可以接受的, 你可以结合你的实际情况运用

    3. 真的数据量大, 筛选条件又多, 又有分词搜索的情况下请考虑上搜索引擎, ElasticSearch, Sphinx等等

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:php mysql
    上一篇:php为什么运行了一段时间后才报内存溢出? 下一篇:laravel邮件发送8000端口一直请求超时
    Web大前端开发直播班

    相关文章推荐

    • PHP验证信用卡卡号是否正确函数_PHP• php微信公众平台开发类实例_PHP• PHP、Java des加密解密实例_PHP• php中session与cookie的比较_PHP• WampServer下安装多个版本的PHP、mysql、apache图文教程_PHP
    1/1

    PHP中文网