Для запросов CosmosDB без учета регистра: использовать повторяющиеся поля в верхнем регистре или строковые значения?

#azure #azure-cosmosdb #azure-cosmosdb-sqlapi

#azure #azure-cosmosdb #azure-cosmosdb-sqlapi

Вопрос:

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

Старый способ сделать это — иметь в вашей схеме дополнительное поле с именем пользователя в верхнем регистре и искать его на основе этого, полагаясь на индекс, чтобы быстро найти его.

Недавно я увидел, что в июне 2020 года они улучшили производительность некоторых системных функций, таких как StringEquals, которые включают поиск без учета регистра, но мне неясно, полагаются ли они на индекс или они просто немного улучшили производительность. Сопоставима ли производительность StringEquals с поиском по дублированному полю в верхнем регистре в масштабе?

Ответ №1:

Да, они зависят от индекса. Стоимость немного выше, чем если бы вы собирались дублировать данные и делать это самостоятельно.

Комментарии:

1. Спасибо! Я полагаю, это означает, что все индексы охватывают как исходный регистр, так и нечувствительный регистр, верно?