В SQL Server 2005 у меня есть запрос, который включает в себя несколько соединений большого размера (каждая таблица имеет порядок от нескольких тысяч строк до нескольких миллионов строк, и в среднем таблицы, вероятно, эквивалентны 10-15 столбцы целых чисел и даты и времени.
Чтобы сделать запрос быстрее, я подумываю о том, чтобы разделить один большой запрос на хранимую процедуру, которая выполняет пару соединений, сохраняет результат, содержащий некоторую временную таблицу, а затем объединяет эту временную таблицу с другой временной таблицей, которая был также результатом нескольких соединений.
В настоящее время я использую табличные переменные для хранения промежуточных таблиц, и одна производительность заметно выше. Но в производстве tempdb
, похоже, имеет узкое место IO.
Есть ли лучший способ подумать о решении такой проблемы? Я имею в виду, что использование табличных переменных здесь далеко от базы?