У меня довольно хлопотное таблицу, которая выглядит следующим образом:SQL-таблица со многими конкретными датами. Как сделать это более масштабируемым?
EventTimeLog
Id (bigint) | Time (datetime) | LogId (FK to Log tables Id column)
Эта таблица показывает времена произошло событие Log. Таким образом, можно записать только одно уникальное событие журнала и разывать эти журналы из этой таблицы.
Проблема в том, что даты являются настолько конкретными, и эти даты могут иметь повторяющиеся значения. Пример:
2015-08-03 23:54:58.000 | 1983
2015-08-03 23:54:58.000 | 1934
2015-08-03 23:54:56.000 | 1647
Через некоторое время он становится очень трудно запросить. Обычно около 500 тыс. Строк или около того начинается раскручивание, даже если я ставлю индекс в LogId и Time. К тому времени, когда я попал в диапазон 1 м и выше, запросы замедляются до обхода ...
Мне нужны эти конкретные времена, поэтому агрегация к началу часа или дня не является вариантом. Я также сомневаюсь в том, что столбцы Count для повторяющихся значений времени будут очень полезны, поскольку эти даты являются настолько гранулированными. Индекс все равно придется перепрыгивать через все те конкретные даты, которые очень медленные.
Я не уверен, как сделать эту таблицу более масштабируемой. Может быть, разбить это на ежемесячные таблицы?
В соответствии с просьбой, вот запрос используется, который начинает урчание
SELECT b.User, b.Ip, b.AccountId, a.Time FROM
EventTimeLog a
inner join [Log] b on a.LogId = b.Id
WHERE
b.UserId = '<param>' AND
a.Time >= '<param>' AND
a.Time <= '<pamam>'
Если разница во времени> 2 дня он пыхтит, как сумасшедший. И да, у меня есть индексы в Log for UserId.
Почему эта информация отсутствует в таблицах журналов? – Paolo
500K строк, и ваш запрос начинает прерываться, хммм, вы посмотрели на счетчики ресурсов? память и процессор и т. д. ...500K строк с тремя столбцами на самом деле не большая таблица, сервер sql с разумными ресурсами должен иметь возможность обрабатывать его довольно красиво. –
Можете ли вы показать нам запрос, который становится настолько медленным? –