У меня никогда не было такого, и поиски в великом Google не сразу поразили меня, поэтому вот что я попробую:
Убедитесь, что вы выполняете этот запрос из окна запроса SSMS. Если это так, перейдите к разделу «Запрос», «Параметры запроса», «Выполнение». Какое значение имеет время ожидания выполнения?
CREATE NONCLUSTERED INDEX YearIndx ON dbo.Papers
(
PublicationYear
)
WITH
(
SORT_IN_TEMPDB = ON
--, ONLINE=ON --Enterprise only
, ALLOW_ROW_LOCKS = OFF --default is on
, ALLOW_PAGE_LOCKS = OFF --default is on
, MAXDOP = 1 --all that you can allow
)
о, и убедитесь, что вы прочитали инструкцию создания индекса, чтобы убедиться, что выбранные мной параметры применимы к вашей ситуации. например, если база данных tempdb находится на том же наборе дисков, что и db_name (6), ситуация, вероятно, только ухудшится
другой вариант - создать идентичную пустую таблицу, в которой есть все нужные вам индексы. тогда вы можете аккуратно заполнить эту таблицу, выбрав из dbo.Papers. Когда вы закончите, то с одной партией, транзакция обернута, переименуйте dbo.Papers в dbo.Papers_old и dbo.Papers_new в dbo.Papers.
наконец, я подумал о вашем индексе. Вы абсолютно уверены, что индекс только для PublicationYear решит любую возникшую проблему? Просто поразило меня, что большинство людей, вероятно, не ищут всего, что написано за один год. Скорее всего, все работы, написанные Джоном в этом году, или все работы, написанные в прошлом месяце.