Главное было не в том, что оптимизировала. Потому что с какой стороны не посмотри - да, было две с половиной минуты, стало пять с половиной секунд. Это счастье, безусловно. Но этот SQL - не часть приложения, это "задание" ( "worker"), и выполняется всего раз в день. Спрашивается, почему мы так лезли из кожи вон сэкономить это две с половиной минуты раз в день?
Причины было две. Первая - что эти две с половиной минуты шли одной транзакцией, и на этом сервере ничего, кроме снятия резервной копии таблиц, так долго не выполняется. Но это даже не причина, а так. Главное - эта штука работала "неправильно". То есть, сейчас у нас на этом сервере очень маленькие объемы, и поэтому пока две с половиной минуты. А написана она была так, что по мере роста объемов (а мы хотим их агрессивно наращивать), время выполнения росло бы экспоненциально, так что очень здорово. что поймали сейчас.
И самый главный результат вчерашней работы - конечно, не то, что убрали эти две с половиной минуты. А то, что мы работали вместе с Кайлом. Кайл - жутко умный, и неофициально исполняет ту же роль со стороны приложений, что я - со стороны баз данных. И мне очень-очень важно было, чтобы мы с ним были на одном уровне понимания. Мы и так с ним обычно очень хорошо друг друга понимаем, когда что-то вместе разрабатываем, но мне не всегда удается доказать, что я вижу опасность, когда нет явных внешних признаков. И во вчерашней работе мне удалось показать очень многое из того, что меня тревожит, и того, что я хотела бы изменить в самом процессе разработки. Никаким другим способом мне бы не удалось этого достичь. Да скорее всего, я бы и сформулировать не смогла...