Поделиться через


Рекомендации по оптимизации схемы

Схема таблицы определяет имена и типы данных всех столбцов в таблице. Схему таблицы можно задать во время создания таблицы или как часть процесса приема данных, изменив применимое сопоставление приема. Способ определения схемы таблицы может значительно повлиять на производительность запроса. Идеальная схема данных зависит от многих факторов, включая вариант использования, шаблоны доступа к данным и определенные данные, которые вы планируете хранить. В этой статье описаны рекомендации по оптимизации производительности путем разработки эффективных схем.

Типы данных

Общие сведения о типах данных см . в скалярных типах данных.

  • Часто используемые поля должны быть типизированными столбцами, а не динамическим типом.

  • Часто искомые или агрегированные свойства JSON в динамическом столбце должны быть преобразованы в обычный столбец таблицы с более конкретным типом, таким как строка, длинная или реальная.

  • Разреженные столбцы, которые обычно не используются для фильтрации и агрегирования, следует собирать в виде контейнера свойств в динамическом столбце DropMappedFields с помощью преобразования сопоставления.

  • Столбцы времени даты должны вводиться в качестве даты и времени, а не длинные или другие типы данных.

  • Десятичный тип обеспечивает точную точность, что делает его наиболее подходящим для финансовых и других приложений, требующих точной точности. Тем не менее, это гораздо медленнее, чем реальный тип. При необходимости используйте только десятичный тип.

  • Все столбцы идентификатора (идентификации) должны вводиться в виде строки, а не числовых. Этот тип делает индекс гораздо более эффективным и может значительно улучшить время поиска. Он также включает секционирование, так как секционирование можно определить только в строковых столбцах. Если фильтры запросов, используемые в этом столбце, имеют только равенство, например если столбец содержит guid, можно использовать профиль Identifierкодирования. Дополнительные сведения см . в политике кодирования.

Таблицы

  • Оптимизация для узких таблиц, которые предпочтительнее для широких таблиц сотнями столбцов.
  • Чтобы избежать дорогостоящих соединений во время запроса, денормализация данных измерения путем обогащения его во время приема. Если таблица измерений, используемая для обогащения, обновляется и сценарий требует последнего значения, используйте представления материализации, чтобы сохранить только последнее значение.
  • Если существует более 20 столбцов, которые являются разреженными, то есть многие значения имеют значение NULL, и эти столбцы редко используются для поиска или агрегирования, а затем группировать столбцы в виде контейнера свойств JSON в динамическом столбце с помощью DropMappedFields сопоставления преобразования.

Индексирование

Поля, в которых никогда не выполняется поиск, могут отключать индексирование. Используйте политику кодирования с профилемBigObject, чтобы отключить индексирование строковых или динамических типизированных столбцов.