TYPO3 TCA 类型 IRRE 非常慢 tt_contents
TYPO3 TCA Type IRRE very slow with tt_contents
有人知道以下查询的来源吗?当我在 TCA 中使用内联类型来关联 tt_content
记录时,由于一个文件夹中有大量 tt_content
记录,因此我遇到了这种关系的巨大性能问题。 (ID:45)
SELECT tt_content.uid
, tt_content.header
, tt_content.subheader
, tt_content.bodytext
, tt_content.t3ver_id
, tt_content.t3ver_state
, tt_content.t3ver_wsid
, tt_content.t3ver_count
, tt_content.CType
, tt_content.hidden
, tt_content.starttime
, tt_content.endtime
, tt_content.fe_group
FROM tt_content, pages
WHERE pages.uid=tt_content.pid
AND pages.deleted = 0
AND tt_content.deleted = 0
AND 1=1
AND tt_content.pid = 45
AND tt_content.sys_language_uid IN (-1,0)
我使用这个配置:
'content_elements' => [
'displayCond' => [
'OR' => [
'FIELD:tasktype:=:1',
'FIELD:tasktype:=:5'
]
],
'exclude' => true,
'l10n_mode' => 'mergeIfNotBlank',
'label' => 'content',
'config' => [
'type' => 'inline',
'allowed' => 'tt_content',
'foreign_table' => 'tt_content',
'foreign_sortby' => 'sorting',
'foreign_field' => 'tx_contentmanager_related_content',
'minitems' => 0,
'maxitems' => 99,
'appearance' => [
'collapseAll' => true,
'expandSingle' => true,
'levelLinksPosition' => 'bottom',
'useSortable' => true,
'showPossibleLocalizationRecords' => true,
'showRemovedLocalizationRecords' => true,
'showAllLocalizationLink' => true,
'showSynchronizationLink' => true,
'enabledControls' => [
'info' => false,
]
]
]
],
我调试了核心文件:/sysext/backend/Classes/Form/FormDataProvider/AbstractItemProvider。php
问题似乎出在 tt_content 条记录的翻译处理上。
$GLOBALS['TCA']['tt_content']['columns']['l18n_parent']['config']['foreign_table_where'] = AND tt_content.pid=###CURRENT_PID### AND tt_content.sys_language_uid IN (-1,0)
但我不知道为什么必须获取当前 pid 中的所有内容。
作为临时解决方案,我更改了 TCA 条目,因为我们不在页面上使用 tt_content 并且还没有翻译。
我不确定这是否是个好主意,但此刻它为编辑解决了我们的性能问题。
$GLOBALS['TCA']['tt_content']['columns']['l18n_parent']['config']['foreign_table_where'] = 'AND tt_content.pid = -1 AND tt_content.sys_language_uid IN (-1,0)';
有人知道以下查询的来源吗?当我在 TCA 中使用内联类型来关联 tt_content
记录时,由于一个文件夹中有大量 tt_content
记录,因此我遇到了这种关系的巨大性能问题。 (ID:45)
SELECT tt_content.uid
, tt_content.header
, tt_content.subheader
, tt_content.bodytext
, tt_content.t3ver_id
, tt_content.t3ver_state
, tt_content.t3ver_wsid
, tt_content.t3ver_count
, tt_content.CType
, tt_content.hidden
, tt_content.starttime
, tt_content.endtime
, tt_content.fe_group
FROM tt_content, pages
WHERE pages.uid=tt_content.pid
AND pages.deleted = 0
AND tt_content.deleted = 0
AND 1=1
AND tt_content.pid = 45
AND tt_content.sys_language_uid IN (-1,0)
我使用这个配置:
'content_elements' => [
'displayCond' => [
'OR' => [
'FIELD:tasktype:=:1',
'FIELD:tasktype:=:5'
]
],
'exclude' => true,
'l10n_mode' => 'mergeIfNotBlank',
'label' => 'content',
'config' => [
'type' => 'inline',
'allowed' => 'tt_content',
'foreign_table' => 'tt_content',
'foreign_sortby' => 'sorting',
'foreign_field' => 'tx_contentmanager_related_content',
'minitems' => 0,
'maxitems' => 99,
'appearance' => [
'collapseAll' => true,
'expandSingle' => true,
'levelLinksPosition' => 'bottom',
'useSortable' => true,
'showPossibleLocalizationRecords' => true,
'showRemovedLocalizationRecords' => true,
'showAllLocalizationLink' => true,
'showSynchronizationLink' => true,
'enabledControls' => [
'info' => false,
]
]
]
],
我调试了核心文件:/sysext/backend/Classes/Form/FormDataProvider/AbstractItemProvider。php
问题似乎出在 tt_content 条记录的翻译处理上。
$GLOBALS['TCA']['tt_content']['columns']['l18n_parent']['config']['foreign_table_where'] = AND tt_content.pid=###CURRENT_PID### AND tt_content.sys_language_uid IN (-1,0)
但我不知道为什么必须获取当前 pid 中的所有内容。 作为临时解决方案,我更改了 TCA 条目,因为我们不在页面上使用 tt_content 并且还没有翻译。 我不确定这是否是个好主意,但此刻它为编辑解决了我们的性能问题。
$GLOBALS['TCA']['tt_content']['columns']['l18n_parent']['config']['foreign_table_where'] = 'AND tt_content.pid = -1 AND tt_content.sys_language_uid IN (-1,0)';