У меня есть таблицаПоиск ближайших данных?
CREATE TABLE `symbol_details` (
`symbol_header_id` int(11) DEFAULT NULL,
`DATE` datetime DEFAULT NULL,
`ADJ_NAV` double DEFAULT NULL
)
с ~ 20000000 записей. Теперь я хочу, чтобы найти значение ADJ_NAV ближе к концу квартала только для одного symbol_header_id:
SET @quarterend = '2009-3-31';
SELECT symbol_header_id AS she, ADJ_NAV AS aend FROM symbol_details
WHERE
symbol_header_id = 18546
AND DATE= (
# date closest after quarter end
SELECT DATE FROM symbol_details
WHERE ABS(DATEDIFF(DATE, @quarterend)) < 10
AND DATE<[email protected]
AND symbol_header_id = 18546
ORDER BY ABS(DATEDIFF(DATE, @quarterend)) ASC LIMIT 1)
Когда я бегу внутренний «выберите дату» запрос возвращается быстро. Просто запуск внешнего запроса с нужной датой, заполненной вместо подзапроса, также заканчивается очень быстро. Но когда я управляю всем этим, это берет навсегда - что-то не так?
У вас есть индекс по дате, а также symbol_header_id? – Donnie
я. Один на дату и один на symbol_header_id и дата плюс один на symbol_header_id. Отмечено ли это так, как оценивается запрос? –