Я использую базу данных DBF в проекте C ++, написанном на RAD Studio 10.2 Tokyo.Чтобы сделать запрос к этой базе данных, я использую компонент UniDac Devart (который немного ограничен по сравнению с самим MySQL).Проблема, с которой я сталкиваюсь, заключается в том, что при использовании условия WHERE IN в запросе выполняется слишком много времени (иногда более одного часа).
У меня есть запрос:
SELECT accountrp, SUM(amounteur) AS montant FROM %s
WHERE doctype='1' AND period<>'00' AND
matchno IN(SELECT matchno FROM %s GROUP BY matchno HAVING SUM(amounteur)<>0)
GROUP BY accountrp
accountrp, doctype, period являются символами, а amounteur является числовым.
Проблема заключается в том, что строка inchnchno IN.Я хотел бы оптимизировать запрос без использования IN.Я видел в Интернете, что условие WHERE IN может быть заменено соединениями INNER JOIN, но я не знаю, является ли это решением и как это сделать.
Можете ли вы помочь мне, пожалуйста?