, так как таблица Statements является самой большой, вы можете перевернуть запрос немного следующим образом:
SELECT
an.AccountNumber
, d.AccountCharacteristic
, st.TotalBalance
FROM
#AccountNumberList an
JOIN Statements st ON st.AccountNumber = an.AccountNumber AND st.TimePeriod = eomonth(getdate(), -1)
JOIN AccountLevelData d ON d.AccountNumber = an.AccountNumber
Если это все еще выполняется медленнее, чем следует, то вам нужно проверить индексы таблиц иих производительность.
Например, вы можете исключить операторы из вышеприведенного запроса, посмотреть, как он работает с таблицей AccountLevelData, если производительность соответствует ожидаемой, затем закомментируйте соединение AccountLevelData, а затем протестируйте соединение операторов.продолжайте тестирование, пока не получите джекпот.(Не забудьте проверить план выполнения каждого теста).
Проверьте все индексы (в основном, отключите все индексы и оставьте тот, который вы хотите использовать, протестируйте запрос, если запрос выполняется быстрее и проблема решена, то вы можете проверить индексы, которые вызвали проблему).
Возможно, вам также потребуется обновить статистику для индексов.Так что, сделай это тоже.