У меня есть таблица SQL Server со следующей структурой:
CREATE TABLE [dbo].[Log](
[LogID] [bigint] IDENTITY(1,1) NOT NULL,
[A] [int] NOT NULL,
[B] [int] NOT NULL,
[C] [int] NOT NULL,
[D] [int] NOT NULL,
[E] [int] NOT NULL,
[Flag1] [bit] NOT NULL,
[Flag2] [bit] NOT NULL,
[Flag3] [bit] NOT NULL,
[Counter] [int] NOT NULL,
[Start] [datetime] NOT NULL,
[End] [datetime] NOT NULL)
Таблица используется для регистрации действий.Столбцы A
- E
представляют внешние ключи, Flag1
- Flag3
указывают определенные состояния журнала, а столбцы Start
и End
отмечают начало и конец действия.
В среднем этотаблица обновляется каждые ~ 30 секунд, а обновление выполняет ~ 50 вставок / обновлений.
Пользователь может сделать запрос из пользовательского интерфейса и отфильтровать данные по любому столбцу и всем комбинациям столбцов и типов столбцов.
Как лучше всего оптимизировать поиск данных для этой таблицы:
- Создайте один «главный» индекс, который будет содержать все эти столбцы
- Определите некоторые из наиболее часто используемых комбинаций фильтров, например[
A,D,E
], [A, Start, End
] и т. Д. И создайте для них индексы - Что-то еще ...