(реляционная) производительность базы данных для даты / времени / интервала

Так что я делаю проект в Access SQL, и он прошел хорошо. Я многое узнал о Access и VBA, и этот сайт помог мне в этом.

Сейчас я сталкиваюсь с проблемой производительности, и, поскольку у меня мало опыта работы с SQL, я прихожу сюда для некоторых мыслей.

У меня есть ~ 20 таблиц реляционной базы данных для около 100 разделов, которые представляют части маршрута. База данных Access - это, по сути, карта, на которой я нарисовал несколько маршрутов (через линии), которые можно динамически раскрашивать - цвет определяется конкретным вопросом и вычисляется из базы данных.

Вот картина, которая объясняет это лучше. Вы не можете нажимать на линии в доступе, чтобы кнопки были одинаковыми по цвету и ширине со строками, и их можно было нажимать для получения дополнительной информации.

Пользователь может выбрать дату, и она будет отображать ход маршрута в соответствии с заданным вопросом. До сих пор эти вопросы всегда были бинарными »да или нет" (зеленый или красный).

Я обнаружил, что из-за сложности запросов мне приходится в значительной степени подготавливать временную базу данных для каждого запроса при запуске, иначе невозможно плавно прокручивать даты.

Так или иначе, вот моя конкретная проблема:

Каждый участок маршрута может находиться на разных этапах (например, строительство) на определенную дату. От "фаза 0 " к "сделанный"

Должна быть реализована новая линия, которая представляет фазы проекта. Существует около 8 возможных этапов для всех разделов, которые могут происходить в разное время и - в данном случае - в разном порядке для каждого раздела, И не все этапы происходят во всех разделах.

В базе данных есть только даты начала, а не даты окончания для каждой фазы. Порядок фаз в значительной степени определяется порядком даты начала. По крайней мере, каждый этап может происходить только один раз для каждого раздела, так что это так. Как вы можете видеть, это дерьмовая вещь для такой программы, ориентированной на производительность.

Я уверен, что это будет включать в себя одну или несколько временных баз данных. Мои идеи:

Объедините все даты в одну строку новой таблицы. Поскольку количество фаз установлено, для каждой фазы есть столбцы - если это необходимо, когда он начинается и когда он заканчивается. Цикл теперь должен пройти каждый и проверить, попадает ли пользовательская дата в какую фазу. Так: "SectionID - фаза1 нужна фаза1 запуск фаза1 конец ..... "

Преимущество:

Можно подтвердить данные вручную и хорошо отобразить их во вторичных формах.Сохраняет базу данных маленькой

Недостаток:Фактический цикл должен пройти (в худшем случае) все фазы, чтобы найти правильный.

Рассчитать новую базу данных, которая простоIdSection - Дата - Фаза " и рассчитать фазу для каждого раздела и КАЖДЫЙ день в интервале.

Преимущество:

Это сохраняет расчеты времени выполнения для одного запроса на разделДоступ должен работать с большими объемами данных

Недостаток:Я не могу вручную проверить, правильно ли было сделано то, что я сделал для всех разделовЗаймет много времени при запуске, как очень долгоЭто займет много записей в этой БД

Теперь я спрашиваю, какой вы бы предпочли, или даже если есть другой метод? Я не могу изменить многое о точках данных, которые у меня есть.

Короче говоря, я должен отображать интервалы времени разных фаз, и в базе данных у меня есть только начальные моменты времени, а не полный порядок фаз.

Спасибо за ваши мысли, любой опыт в такого рода вещах поможет

Ответы на вопрос(1)

Ваш ответ на вопрос