У меня есть MEMORY
MYSQL база данных, которая содержит таблицу с 200k + строками.Я использую эту базу данных для тестирования торговых стратегий, поэтому она неоднократно запрашивается до тошноты.Новые данные не добавляются в базу данных.
Один столбец в основной таблице этой базы данных - «Время дня».При каждом запросе моя хранимая процедура выбирает те строки, где «Время дня» падает максимум за 2 часа до или через 2 часа после ввода запроса «Время дня».
Поскольку данные в моей базе данных имеют 5-минутное разрешение, существует всего 288 возможных "времен суток" (24 * 60/5 = 288)
.
Это означает, что каждый запрос выбирает примерно 1/288
стола.Более того, это означает, что между запросом A и запросом B существует огромное перекрытие (которое следует сразу).
В данный момент существует просто 1 огромная таблица, которая фильтруется при каждом запросе.Это (слишком) медленно.
Я пытался найти более оптимальную настройку.Я рассмотрел создание 288 предварительно отфильтрованных таблиц и просто доступ к ним во время запроса.Это, однако, занимает слишком много оперативной памяти и в итоге замедляет запрос, а не ускоряет его.
Существуют ли более оптимальные решения?