2012-01-24 5 views
0

Различимы mongodb между индексами, построенными из небольших элементов статического размера (например, числовых типов) и типов с большими вариантами (например, строк)?Структуры данных индекса mongodb

Из спецификации BSON я вижу, что BSON показывает способность специальной обработки интегральных типов. Я бы ожидал, что индексный код создаст более эффективные индексы, если индекс содержит только int64.

Возможно, у него есть какая-то форма дискриминационного союза?

+0

Что вы подразумеваете под дискриминацией? Вы можете указать MongoDB использовать определенные индексы в ваших запросах, чтобы он использовал лучший индекс для вашего запроса; вы можете проверить свои индексы, чтобы узнать, какой из них быстрее для конкретного запроса. Я бы предположил, что индекс по числовому значению будет более результативным, чем алфавитно-цифровой индекс из-за характера данных. – SomethingOn

+0

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

ответ

3

Содержание B-Tree в основном представляет собой сериализованное представление BSON проиндексированных полей и указатель на расположение диска этого объекта.

Здесь link to the code, где упоминается об этом. Фактически, здесь используются woCompare function, которые они используют при прохождении по индексу.

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

Смежные вопросы