MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Dans MongoDB, si un index est sur 3 champs, pouvons-nous utiliser cet index lors d'une requête sur 2 champs ? (joker sur le 3e champ)

Ce sont des index B-tree, ils peuvent donc être utilisés pour un sous-ensemble de préfixes des colonnes impliquées. Si vous n'avez pas les colonnes de tête, un parcours d'index (l'opération pour laquelle un index B-tree est principalement utilisé) n'est plus possible. Il peut y avoir d'autres façons d'utiliser l'index (Oracle a des analyses complètes rapides et ignore les analyses par exemple), mais généralement, l'index ne sera pas utilisé.

Ce raisonnement s'applique à tout ce qui utilise des index B-tree, BD relationnelle ou non.

Encore une fois, cela ne dépend pas du type de la colonne, mais de l'ordre des colonnes dans l'index. Vous devez avoir les colonnes principales (dans votre cas, vous avez besoin de page_type). Si vous avez de nombreuses requêtes sans page_type, envisagez de recréer l'index avec page_type comme dernière colonne (ce qui, bien sûr, peut également avoir un impact négatif sur d'autres requêtes). En général, vous devez savoir quel type de requêtes vous exécuterez avant de pouvoir concevoir les index.