Помимо предоставления всех временных таблиц в качестве традиционных таблиц, чтобы включить аудит, я выставляю все временные таблицы отдельно с подсказкой FOR SYSTEM_TIME ALL
.Это легче использовать, так как текущая запись также находится в наборе результатов.
Однако, ORDER BY
в моей учетной записи вместе с временной подсказкой FOR SYSTEM_TIME ALL
заставляет ее пролить данные в базу данных tempdb.,Это настоящий убийца производительности.Мне нужно ORDER BY
для нумерации страниц.Я также попробовал UNION
как временной таблицы, так и таблицы истории, и применил к этому ORDER BY
, но это, естественно, приводит к той же проблеме производительности.Можно ли что-нибудь сделать, чтобы решить эту проблему?
Ниже вы найдете реальные планы выполнения.Как видно, индексы, охватывающие первичный ключ и столбцы периодов, присутствуют в обеих таблицах.
Просто FOR SYTEM_TIME ALL
:
Просто ORDER BY
:
FOR SYSTEM_TIME ALL
с ORDER BY
: