Посмотреть с NOEXPAND остановить расширение - PullRequest
0 голосов
/ 11 октября 2011

У меня есть большая база данных, и для одной из таблиц я хочу создать представление noexpand, которое отфильтрует некоторые записи из таблицы - из 10 000 000 записей должно отображаться только 100 000, но выполнение создания дляпредставление длится более 10 минут, а представление не создается.

Как сделать так, чтобы представление заполнялось в фоновом режиме SQL, или чтобы скрипт выполнялся более 10 минут?

SQL Server расположен на другом компьютере, и у меня есть только административный доступ к SQL, а не к компьютеру, чтобы изменить machine.config.

1 Ответ

1 голос
/ 10 августа 2012

Если я правильно вас понял, у вас недостаточно прав доступа, чтобы перейти на этот удаленный компьютер с SQL Server и настроить нужные представления / индексы? Но у вас достаточно прав для динамического выполнения представления создания из вашего кода?

Если вы хотите отфильтровать эти 100 тыс. Строк из 10 млн., Я бы предложил вам создать индексированное представление, содержащее точно выбранные столбцы, только те, которые вам нужны, и отфильтровать все строки, которые вы не можете необходимо.

Например, вы хотите работать только с датами в этом году, и у вас есть данные за 10 лет в базе данных.

Вы бы создали представление, но с опцией WITH SCHEMABINDING , которая позволила бы вам добавить кластеризованный индекс для этого представления.

После того, как вы это сделаете, вы сможете свободно вызывать свой новый вид (возможно, с опцией WITH (NOEXPAND) в SELECT), и это даст вам возможность поиска только по 100k строк, которые вы запросили. для.

Теперь, поскольку вы не можете напрямую получить доступ к SQL Manager на этом сервере, просто напишите свое представление create, создайте индекс SQL и выполните его изнутри своего кода. Вы сделаете это один раз, и он навсегда останется на вашем сервере.

Надеюсь, у меня все хорошо, иначе я могу полностью упустить смысл. :) Но, тем не менее, если вы хотите отфильтровать нежелательные данные, индексированное представление будет правильным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...