У меня довольно сложная (или уродливая в зависимости от того, как вы ее смотрите) хранимую процедуру, запущенную на SQL Server 2008. Она основывает много логики на представлении с таблицей pk и таблицей fk. Таблица fk слева соединена с таблицей pk чуть более 30 раз (таблица fk имеет плохой дизайн - она использует пары значений имени, которые мне нужно сгладить. К сожалению, это сторонняя сторона, и я не могу ее изменить).
Во всяком случае, он работал отлично в течение нескольких недель, пока я не заметил заметок, которые заняли бы 3-5 минут. Оказывается, это время, необходимое для формирования плана запроса. Как только план запроса существует и кэшируется, сама хранимая процедура выполняется очень эффективно. Все будет работать гладко, пока не будет причин для восстановления и кэширования плана запроса.
Кто-нибудь видел это? Почему для составления плана требуется много времени? Есть ли способы ускорить разработку плана?