TYPO3 Extbase 查询总是超级慢
TYPO3 Extbase queries always super slow
拉取1000多条记录时,无论多么简单,在TYPO3中使用Extbase(在自定义扩展中),总是需要很长时间。使用自定义 SELECT 语句(如 $query->statement( "SELECT......)虽然要快得多。
我多年来一直使用 TYPO3(和 Extbase),我总是 运行 遇到这样的问题,即在处理大量(1000 多条)记录时,从任何文件中提取和显示数据table 随着记录数量的增加变得非常慢。我总是最终使用 $query->statement( "SELECT * from this or that table" ),出于某种原因,这比使用 Extbase 的内置查询方法快得多,后者使用 $query->matching(.......) ;
有谁知道如何加快常规(内置)查询方法以使其与 "custom statement method" 速度相匹配?
我从 6.x 版本开始就遇到过这个问题 - 我现在使用 9.x
Extbase 将获取关系(不是惰性加载的)并将执行大量对象映射、class 内省、SQL table/map 解析等。这就是为什么 Extbase 本质上会比您的查询慢 - Extbase 只是做了很多,不仅仅是查询。
加速方法,其相关性取决于您未描述的用例:
- 确保作为关系一部分的每个最后 属性 存在索引和键,table 连接条件子句。
- 将您不使用/很少用于相关特定列表视图的属性标记为延迟加载,以避免在访问它们之前查询它们。
- 如果以上还不够:
- 创建一个扁平化 table,其中包含从多个 table 中提取的属性。
- 创建一个扁平的 table 作为 SQL 视图(并允许它缓存)
- 创建一个非常有限的模型来反映您列出的对象并使用此对象(使用标准对象 table 或扁平化 table)
其中每一项都会迭代地改进性能,其中大部分 "bang for your buck" 来自最后一组建议。
拉取1000多条记录时,无论多么简单,在TYPO3中使用Extbase(在自定义扩展中),总是需要很长时间。使用自定义 SELECT 语句(如 $query->statement( "SELECT......)虽然要快得多。
我多年来一直使用 TYPO3(和 Extbase),我总是 运行 遇到这样的问题,即在处理大量(1000 多条)记录时,从任何文件中提取和显示数据table 随着记录数量的增加变得非常慢。我总是最终使用 $query->statement( "SELECT * from this or that table" ),出于某种原因,这比使用 Extbase 的内置查询方法快得多,后者使用 $query->matching(.......) ;
有谁知道如何加快常规(内置)查询方法以使其与 "custom statement method" 速度相匹配?
我从 6.x 版本开始就遇到过这个问题 - 我现在使用 9.x
Extbase 将获取关系(不是惰性加载的)并将执行大量对象映射、class 内省、SQL table/map 解析等。这就是为什么 Extbase 本质上会比您的查询慢 - Extbase 只是做了很多,不仅仅是查询。
加速方法,其相关性取决于您未描述的用例:
- 确保作为关系一部分的每个最后 属性 存在索引和键,table 连接条件子句。
- 将您不使用/很少用于相关特定列表视图的属性标记为延迟加载,以避免在访问它们之前查询它们。
- 如果以上还不够:
- 创建一个扁平化 table,其中包含从多个 table 中提取的属性。
- 创建一个扁平的 table 作为 SQL 视图(并允许它缓存)
- 创建一个非常有限的模型来反映您列出的对象并使用此对象(使用标准对象 table 或扁平化 table)
其中每一项都会迭代地改进性能,其中大部分 "bang for your buck" 来自最后一组建议。