Хеш-распределение принимает хеш двоичного представления вашего ключа распределения, а затем детерминистически отправляет строку в назначенный дистрибутив.Как правило, значение int 999 попадает в один и тот же дистрибутив в каждом Azure SQL DW.Он не смотрит на ваши конкретные 60 уникальных идентификаторов транспортных средств и равномерно их разделяет.
Лучше всего выбирать поле (лучше всего, если оно используется в объединениях или групповых или разных счетах), которое имеет не менее 600 (в 10 раз больше распределений) достаточно равномерно используемых значений.Существуют ли другие поля, которые соответствуют этому критерию?
Чтобы процитировать из этой статьи добавление некоторого акцента:
Имеет много уникальных значений.Столбец может иметь несколько повторяющихся значений.Однако все строки с одним и тем же значением присваиваются одному и тому же распределению.Поскольку существует 60 распределений, столбец должен иметь не менее 60 уникальных значений.Обычно число уникальных значений значительно больше .
Если у вас есть только 60 различных значений, вероятность того, что вы получите равномерное распределение, очень мала.Чем в 10 раз больше значений, тем выше вероятность достижения равномерного распределения.
Резервным вариантом является использование циклического распределения.Делайте это только в том случае, если нет других хороших ключей распространения, которые производят равномерное распределение и которые используются в запросах.В циклическом циклическом режиме должна быть достигнута оптимальная производительность загрузки, но производительность запросов пострадает, потому что первый шаг каждого запроса будет случайным.
По моему мнению, объединение двух столбцов вместе (как предполагает ответ Эллиса) для использования в качестве ключа распределения обычно является худшим вариантом, чем круговое распределение, если только вы на самом деле не используете объединенный столбец в групповых соединениях, объединениях или различныхcount.
Возможно, что текущее распределение идентификаторов транспортных средств - лучший выбор для эффективности запросов, поскольку это устранит шаг тасования во многих запросах, которые присоединяются или группируются по идентификатору транспортного средства.Однако производительность нагрузки может быть намного хуже из-за сильного перекоса (неравномерное распределение).