Очень странная производительность индекса в SQL Server 12 - PullRequest
0 голосов
/ 10 апреля 2019

У меня есть таблица 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)?

спасибо за вашу помощь

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