Что такое продуктивный / эффективный способ запроса таблицы с повторяющимися полями с использованием T-SQL? - PullRequest
2 голосов
/ 08 сентября 2011

У меня есть таблицы (упрощенные), как это:

Lender
   Id (PK)
   AgencyCode1
   AgencyCode2
   AgencyCode3...
   AgencyCode20

Agency
   AgencyCode
   AgencyName

Таблица Lender - это денормализованные данные, поступающие из представления для отчетности. Мне нужна одна строка в выходных данных для каждого Кредитора, и мне нужно присоединить коды агентств к таблице агентств, чтобы получить отображаемое название для каждого агентства.

Результирующий вывод, который я ищу в каждой строке:

LenderId, AgencyCode1, AgencyName1, ... AgencyCode20, AgencyName20

По какому шаблону достигается наилучший баланс между производительностью и производительностью (разработчика) для запроса чего-то подобного?

- Правка. Код агентства не был первичным ключом, как я изначально указывал.

1 Ответ

4 голосов
/ 08 сентября 2011

Повторение @Martin Smith комментария, разворачивания, объединения и разворота, вероятно, было бы наиболее эффективным и целесообразным с точки зрения производительности, а благодаря разработке тонкостей разворачивания и разворота ваши разработчики стали бы более опытными и, следовательно, более производительными со временем.

В качестве альтернативы, если имеется 20 и всегда 20 денормализованных столбцов, вы можете просто выписать 20 левых внешних объединений (при условии, что когда-либо Лендер не связан с 20 агентствами). Это ужасный код, и для обработки 20 соединений потребуется SQL ... но если таблица Агентства мала (где я бы назвал 8 страниц / 1 экстент небольшим), тогда общее время обработки может быть относительно короткий. Потребовалось бы провести тестирование, чтобы определить, какие из них наиболее эффективны.

Что касается общей производительности разработчиков, следите за тем, как долго все занимает (включая отправку в SO). Когда это будет сделано, подсчитайте все и используйте его, чтобы показать, сколько времени было потрачено вашими разработчиками на работу с плохо спроектированными таблицами.

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