Постоянная функция в SQL Server (медленное представление, использующее функцию) - PullRequest
4 голосов
/ 12 апреля 2010

Я закодировал представление, которое полагается на скалярное значение функции для одного, если его условия соединения. План запроса консервативно предполагает, что результат функции может изменяться между выполнениями, когда функция постоянна (по крайней мере, для каждого полного запроса). Результат меняется один раз в день или около того.

Из-за огромного количества строк план запроса неэффективен. Мне нужен способ сообщить SQL-серверу, что значение не изменится. Поскольку вы не можете объявить переменную в представлении, я не уверен, как решить проблему. Возможно, подойдет подсказка запроса или другая конструкция?

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

Спасибо С уважением Крейг.

1 Ответ

2 голосов
/ 12 апреля 2010

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

...