У меня есть таблица facTableA.
эта таблица имеет один первичный ключ, состоящий из: IdDimRandomTable и IdDimDate
в среде разработчика, для некоторых тестов я проводил некоторые чистки этой таблицы вместе с десятками других.
но теперь мой план обслуживания блокируется каждый раз, когда он попадает в эту таблицу, потому что теперь запросы на удаление в этой таблице занимают много времени (никогда не видел ни одного завершения).
очевидно, ничто не блокирует стол. Каждый день я без проблем вставляю в него сотни тысяч строк.
Я проверил фрагментацию индекса, но она <2%.
и обновленная статистика </p>
теперь простые запросы выбора занимают много времени.
так что я выполнял раньше, это
удалить top (1000) * из FacTableA
где IdDimDate отсутствует (выберите IdDimDate в представлении)
но теперь он работает бесконечно.
select top(1) * from FacTableA
where IdDimDate not in ( select IdDimDate from view )
это займет уйму времени> 20 минут (никогда не хватило терпения, чтобы закончить один
против
select top(1000) * from FacExposureMarket
where IdDimDate not in ( select IdDimDate from view )
это занимает намного меньше времени (от 2 минут до 10 минут)
против
select * from FacExposureMarket
where IdDimDate not in ( select IdDimDate from vwTwoDisplayedDates)
занимает ВСЕ строки за 38 секунд
я бы на самом деле ожидал обратного? (Я даже создал некластеризованный индекс по dimdate и использовал WITH (INDEX (NEWINDEXDIMDATE)), но он медленнее, чем PK
Кроме того, мы удалили много таблиц, и база данных работает медленнее, чем обычно.
может ли в этом случае быть полезной база данных shrinkd (с notruncate)?
спасибо за вашу помощь