$for_hl = 'Itemtransfer';
$entity = HL\HighloadBlockTable::compileEntity($for_hl);
$entity_data_class = $entity->getDataClass();
$for_hl_1 = 'Itemost';
$entity_1 = HL\HighloadBlockTable::compileEntity($for_hl_1);
$entity_data_class_1 = $entity_1->getDataClass();
$select_hl = [
'ID',
'UF_NO_SOPOSTAVLENIY',
'UF_FOR_PARSING',
'price_value',
];
$filter_hl = [
'UF_FOR_PARSING' => null,
'UF_NO_SOPOSTAVLENIY' => null,
//'!ITEMTRANSFER_price_value_ID' => null,
];
$order = [
'ID' => 'ASC',
];
$runtime_element = [
'price_value' => [
'data_type' =>$entity_data_class_1,
'reference' => [
'=this.ID' => 'ref.UF_CHAIN_PRICE_ITEMTRANSFER_ID',
],
],
];
$elements_hl_1 = $entity_data_class::getList(
[
'filter' => $filter_hl,
'select' => $select_hl,
'limit' => 1,
'order' => $order,
'runtime' => $runtime_element,
]
)->fetchAll();
Подскажите пожалуйста почему может не выполняться такой запрос (точнее что то грузит но до грузить не может)
В рантайме обращаюсь к другому хл блоку но если там нету записи с совпадение по
'=this.ID' => 'ref.UF_CHAIN_PRICE_ITEMTRANSFER_ID',
То запрос просто не выполняется идет очень долгая выборка десятки минут
Само UF_CHAIN_PRICE_ITEMTRANSFER_ID
является NotNull
индекс по UF_CHAIN_PRICE_ITEMTRANSFER_ID тоже стоит
Если добавляю фильтрацию по //'!ITEMTRANSFER_price_value_ID' => null,
или меняю 'join_type' => 'LEFT', на RIGHT/INNER (что в целом условно аналогично)
То тоже все ок работает
Но почему не может выполнить выборку при отсутствие совпадения? при LEFT типе?