【问题标题】:TYPO3 Extbase queries always super slowTYPO3 Extbase 查询总是超级慢
【发布时间】:2019-10-29 12:21:23
【问题描述】:

当提取 1000 多条记录时,现在无论多么简单,在 TYPO3 中使用 Extbase(在自定义扩展中),总是需要很长时间。使用自定义 SELECT 语句(例如 $query->statement("SELECT......) 会快得多。

我多年来一直使用 TYPO3(和 Extbase),但我总是遇到这样的问题,即在处理大量(1000 多条)记录时,从任何表中提取和显示数据都会变得非常缓慢,因为记录数量增加。我总是最终使用 $query->statement("SELECT * from this or that table" ),由于某种原因,这比使用 Extbase 的内置查询方法快得多 $query->matching(..... ...);

有谁知道如何加快常规(内置)查询方法,使其与“自定义语句方法”速度相匹配?

我从 6.x 版开始就遇到过这个问题 - 我现在使用的是 9.x

【问题讨论】:

    标签: database typo3 extbase


    【解决方案1】:

    Extbase 将获取关系(不是延迟加载的),并将执行一堆对象映射、类内省、SQL 表/映射解析等。这就是为什么 Extbase 本质上会比您的查询慢的原因 - Extbase 只是做很多事情,不仅仅是一个查询。

    加速方法,其相关性取决于您未描述的用例:

    • 确保作为关系、表连接条件子句一部分的每个最后一个属性都存在索引和键。
    • 将您不使用/很少用于相关特定列表视图的属性标记为延迟加载,以避免在访问它们之前查询它们。
    • 如果以上还不够:
      • 创建一个平面表,其中包含从多个表中提取的属性。
      • 创建一个扁平表作为 SQL 视图(并允许它缓存)
      • 创建一个非常有限的模型来反映您列出的对象并使用该对象(与标准对象表或扁平表一起)

    每一个都将迭代地提高性能,最“物有所值”的建议来自最后一组建议。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多