Я пытаюсь создать индексный просмотр, содержащий только данные за последние 2 недели.Индексированный просмотр с данными за последние две недели
Эта часть работает отлично:
CREATE VIEW [dbo].[MainLogView]
WITH SCHEMABINDING
AS
SELECT Id, Date, System, [Function], StartTime, EndTime, Duration, ResponseIsSuccess, ResponseErrors
FROM dbo.MainLog
WHERE (Date >= DATEADD(day, - 14, GETDATE()))
Но когда я пытаюсь добавить индекс:
CREATE UNIQUE CLUSTERED INDEX IDX_V1
ON MainLogView (Id);
Я адресности:
Невозможно создать индекс на представлении «dbo.MainLogView ». Функция 'getdate' дает недетерминированные результаты. Используйте детерминированную системную функцию, или измените определяемую пользователем функцию, чтобы возвращать детерминированные результаты.
Я знаю почему, но как уменьшить данные в представлении за последние 2 недели? Мне нужна небольшая и быстрая запрашиваемая часть данных из моего стола.
Вы не можете. Ведение индексированного представления выполняется эффективно с помощью триггеров по отношению к базовым таблицам и основано исключительно на строках, затрагиваемых отдельными действиями на этих базовых таблицах (следовательно, все их ограничения). В течение последних двух недель потребуется какой-то альтернативный механизм обслуживания, которого нет в SQL Server. –
Почему вы создаете индекс для ID – TheGameiswar
@TheGameiswar, потому что я хочу проверить его. Первый колум. В этом случае он пренебрежимо мал. Послушайте, что это не сработает. – BWA