Это повторное представление моей previous question:Базы данных Реализации Помощь: временные ряды данные
У меня есть коллекция данных упорядоченных временных рядов (запас минуты информация о ценах). Моя текущая структура базы данных, использующая PostgreSQL, находится ниже:
symbol_table
- где я храню список символов с symbol_id
в качестве первичного ключа (серийный). time_table, date_table
- там хранятся значения времени/даты. time_id/date_id являются первичными ключами (последовательный/последовательный).
Моего главный minute_table
содержит информацию о ценах минуты где date_id|time_id|symbol_id
являются первичными ключи (также внешние ключи из соответствующих таблиц)
Используя этот главный minute_table
я выступаю различные статистические анализы и сохранить результаты в отдельных таблицах , например one_minute_std
- где хранится одна минута стандартных мер отклонения.
Каждую ночь я обновляю таблицы с текущей ценовой информацией по ценам закрытия последнего дня.
С текущей реализацией мои таблицы содержат все символы размером около 50 м каждый. Первичные ключи индексируются.
Если я хочу получить запрос для all the symbols where closing price > x and one_minute_std >2 and one_minute_std < 4 for the specific date
, это займет около 3-4 минут для поиска.
Чтобы ускорить процесс, я думал о разделении каждого символа на собственный стол, но не на 100% уверен, что это «правильный» способ сделать это.
Не могли бы вы посоветовать мне, как я могу ускорить процесс запроса?
Благодарим вас за ответ! Я собираюсь реализовать это на своем db. – Timka
К сожалению, я не мог увеличить скорость за счет того, что создание 1000-секундных разделов (на символ) не ускоряет работу db ... Изучая различные решения, можно использовать NoSQL – Timka