@kyja

Почему не выполняется запрос при ответе null в runtime секции?

$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 типе?
  • Вопрос задан
  • 40 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы