SELECT
h1.Date AS Date,
h1.Currency AS Currency1,
h2.Currency AS Currency2,
h1.Account AS Account,
SUM(h1.Size) AS Size1,
SUM(h2.Size) AS Size2,
h1.MaturityDate AS MaturityDate
FROM
htable h1 JOIN htable h2 ON
h1.AssetClass = 'FX' AND
h2.AssetClass = 'FX' AND
h1.Date = h2.Date AND
(SUBSTR(h1.Ticker, 7, 3) <> h1.Currency) AND
(SUBSTR(h2.Ticker, 7, 3) = h2.Currency) AND
h1.SecID = h2.SecID
GROUP BY h1.Date, h1.Currency, h2.Currency, h1.Account, h1.MaturityDate
HAVING SUM(h1.Size) <> 0 AND SUM(h2.Size) <> 0)
Запрос выше, БЕЗ предложения GROUP BY, выполняется быстро при запросе для конкретной Дата .
Проблема в том, что когда я добавляю GROUP BY, она становится очень медленной, даже если я добавляю конкретную Дата в предложение HAVING.
Я уже добавил индексыдля htable для столбцов Дата , AssetClass , SecID , Валюта , MaturityDate , а также индекс для комбинации ( Дата , Счет , Валюта , MaturityDate ).
Это делается в MySQL.Есть ли у вас какие-либо советы о том, как ускорить запрос (я планирую использовать запрос для определения представления)?Спасибо!