Кажется, что первый подзапрос всегда выбирает только одну строку, как только Symbol = inSymbol
, так что вы можете просто переписать его следующим образом. И обязательно нужно индексировать Symbol
и TimestapmMs
поля
SELECT
One,
Two,
TimestampMs,
Symbol,
TimestapmMs
FROM Times
WHERE Symbol = inSymbol
AND TimestampMs = (SELECT
MAX(TimestampMs)
FROM times
WHERE Symbol = inSymbol
AND TimestampMs < inDateTo)
Также, если TimestampMs
поле уникально (только одна запись имеет значение MAX), и этот запрос всегда возвращает только одну запись, которую вы можете использовать LIMIT 1
, чтобы получить эту запись:
SELECT
One,
Two,
TimestampMs,
Symbol,
TimestapmMs
FROM Times
WHERE Symbol = inSymbol
AND TimestampMs < inDateTo
ORDER BY TimestampMs DESC
LIMIT 1