MongoDB: Самый быстрый способ индексации двумя полями? - PullRequest
0 голосов
/ 07 ноября 2018

Я использую MongoDB в качестве базы данных для сети игрового сервера. У каждого игрока в сети есть два способа их идентификации: имя пользователя и UUID. Оба поля уникальны для каждого игрока, и часто бывает полезно получить UUID игрока по его имени, получить его имя по UUID и получить весь документ по его имени или UUID. Без учета требований к пространству, какая схема индексации позволит быстрее выполнять эти запросы?

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

1 Ответ

0 голосов
/ 07 ноября 2018

Производительность всегда ниже узкого места (будь то дисковый ввод-вывод, сеть, ЦП или ОЗУ), но если ваши документы проигрывателя очень большие, могут помочь два составных индекса: [UUID, имя пользователя] и [имя пользователя, UUID] . Первый из них будет наиболее эффективным способом получения имени пользователя по UUID, а второй поможет получить UUID по имени пользователя.

На практике, я думаю, уникальные индексы только для [username] и [UUID] будут почти такими же быстрыми.

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