XML к структуре C и структуре C к [закрытому] XML

Так как именно здесь оптимизаторы сильно отличаются, давайте попробуем оптимизировать

SELECT APN, property_case_detail_id FROM property_inspection AS pi
  GROUP BY APN, property_case_detail_id
  HAVING 
  COUNT(IF(status='Resolved Date', 1, NULL)) = 0
) as open_cases

Попробуйте:

SELECT ...
    FROM property AS p
    WHERE NOT EXISTS ( SELECT 1 FROM property_inspection
                 WHERE status = 'Resolved Date'
                   AND p.parcel_number = APN )
    ORDER BY ???  -- without this, the `LIMIT` is unpredictable
    LIMIT 0, 1000;

или ...

SELECT ...
    FROM property AS p
    LEFT JOIN  property_inspection AS pi  ON p.parcel_number = pi.APN
    WHERE pi.status = 'Resolved Date'
      AND pi.APN IS NULL
    ORDER BY ???  -- without this, the `LIMIT` is unpredictable
    LIMIT 0, 1000;

Индекс:

property_inspection:  INDEX(status, parcel_number) -- in either order
7
задан Matthias Wandel 8 May 2009 в 22:56
поделиться

2 ответа

One way you could do it if you don't find any premade libraries or code is to write a toXML() function like the usual toString() functions. Then a toStruct(char*) that deserializes the XML back into the struct

2
ответ дан 7 December 2019 в 05:30
поделиться

Вы не сможете анализировать XML в общем случае всего несколькими сотнями строк кода. Существует несколько библиотек синтаксического анализатора XML, из которых на ум приходит expat . Expat был написан на C и имеет дружественный к C. API.

Сериализация, вероятно, будет проще, если вы не сходите с ума с поддерживаемыми вами типами данных.

В любом случае, где это может вызвать у вас головную боль, так это в поддержании соответствия между макетом struct и схемой XML.

Вы можете изучить библиотеки вроде SCEW , которые призваны скрыть управляемую событиями природу реализации expat и представить нечто большее, чем дерево DOM. Также существуют различные библиотеки, реализующие SOAP поверх expat,

2
ответ дан 7 December 2019 в 05:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: