【问题标题】:How to filter cached query in Laravel如何在 Laravel 中过滤缓存的查询
【发布时间】:2023-03-30 03:18:02
【问题描述】:

需要有关此概念的帮助/建议。我有非常复杂的流利查询,它根据用户过滤器提取行。

我正在考虑制作将被缓存的未过滤(仅连接,没有 where/whereIns)查询,然后根据用户需要以某种方式过滤该缓存查询。

每次表单过滤器更改时查询 db 会有 2-3 秒的延迟,所以我猜这可以更好地执行。

现在未过滤的查询大约有 5k 行,平均过滤的查询会带来 500-1000 行。

查询大约有 25 列,包含 4 个 CONCATS、3 个 CASE 语句和 14 个 leftJoins。

这样对吗?还有其他建议吗?

提前致谢!

是的

【问题讨论】:

  • 哪个系统缓存了未过滤的结果?
  • 还没有。我以为 Laravel 5.1 Cache,带文件驱动?
  • 您也可以使用 MySQL/MariaDB 缓存。所以你永远不会有旧的结果。当您写入在缓存结果中使用的表时,缓存被清除
  • 好的,谢谢你的提示,我会看看的。所以这就像创建一个视图?
  • @Yuray 你可以阅读 MySQL 手册中的How the Query Cache Operates

标签: php mysql laravel caching laravel-5.1


【解决方案1】:

也许你可以使用sql view

或者您可以将过滤后的数据存储到另一个数据库表中。您可以使用trigger 自动更新它。

顺便说一句,您可以使用 sql 从数据库表中快速过滤数据。

它就像 dbcache,但你可以控制它。

【讨论】:

    猜你喜欢
    • 2017-10-12
    • 2019-12-14
    • 2020-08-30
    • 2013-11-11
    • 2012-09-20
    • 2016-09-03
    • 1970-01-01
    • 1970-01-01
    • 2014-10-18
    相关资源
    最近更新 更多