домовой
Есть в битрикс такая гадость: фасетный индекс. Представляет он из себя две дополнительные таблицы куда складываются  свойства участвующие в поиске. 
Как оно выглядит
одна таблица имеет  формат имени b_iblock_$iblock_id_index_val  и является  справочником  текстовых значений
  поля 
  id,
  value.

вторая таблица имеет  формат имени  b_iblock_$iblock_id_index - содержит поля
 ELEMENT_ID - собственно ид  элемента  ифоблока
 SECTION_ID - все секции родители  для element_id (да  характеристики повторяются столько раз  сколько  секций  родиелей   есть  у товара)
 FACET_ID - рассчитывается по  правилу  "(вписывается цена ==Да)? (ид_типа_цены*2+1) : (ид_свойства*2)"
 VALUE - если тип свойства не число то  ид из  справочника
 VALUE_NUM - значение числовых  свойств включая перечисляемые и ссылки на  ид  элемента
 INCLUDE_SUBSECTIONS 


Оно круто ускоряет поиск по характеристикам/вывод  виджета  catalog.section.
Но вот беда, алгоритм генерации фасетного индекса творит лютую дичь  в результате  которой   часть товара  просто исчезает из результатов поиска.
ниже будут записываться способы поиска ошибок фасетного  индекса.


$iblock_id -  ид инфоблока 
$section_id - ид товарного направления 
$property_id - ид свойства  по которому идет поиск в товарном направлении.

1. Найти товары которых нет в фасетном индексе вообще.


$sql="select  xml_id from  b_iblock_element   where  iblock_id=$iblock_id and active='Y' and  not  exists (select * from b_iblock_".$iblock_id."_index where  b_iblock_".$iblock_id."_index.ELEMENT_ID=b_iblock_element.id )";



2.  Найти  товары у которых есть  свойство по которому выполняется поиск в товарном направлении и нет  в фасетном индексе


select xml_id from   b_iblock_element  where iblock_id=$iblock_id  and section_id=$section_id and  active='Y'  and not exists  (select * from  b_iblock_element_property  where IBLOCK_PROPERTY_ID=$property_id and   iblock_ELEMENT_ID=b_iblock_element.id)  and   exists(select * from b_iblock_$iblock_id_index where FACET_ID=($property_id *2)  and  element_id=b_iblock_element.id)

3.  Найти  товары у которых  нет свойства по которому выполняется поиск в товарном направлении и  есть  в фасетном индексе


select xml_id from b_iblock_element  where iblock_id=$iblock_id  and section_id=$section_id and  active='Y'  and exists  (select * from  b_iblock_element_property  where IBLOCK_PROPERTY_ID=$property_id and   iblock_ELEMENT_ID=b_iblock_element.id)  and  not  exists(select * from b_iblock_$iblock_id_index where FACET_ID=($property_id *2)  and  element_id=b_iblock_element.id)