デフォルトでは、MongoDB はドキュメントの _id キーにインデックスを作成します。しかし、追加のインデックス (MySQL の InnoDB のようにセカンダリ?) を確認してクエリを実行すると、エンジンはそれをスキャンし、_id インデックスを選択的にスキャンしてドキュメントのオフセットを取得しますか?
シャーディングが来ると、すべてのチャンクに独自のインデックスがあり、クエリごとに多くのランダム読み取りがあるので、私は混乱していますか?
デフォルトでは、MongoDB はドキュメントの _id キーにインデックスを作成します。しかし、追加のインデックス (MySQL の InnoDB のようにセカンダリ?) を確認してクエリを実行すると、エンジンはそれをスキャンし、_id インデックスを選択的にスキャンしてドキュメントのオフセットを取得しますか?
シャーディングが来ると、すべてのチャンクに独自のインデックスがあり、クエリごとに多くのランダム読み取りがあるので、私は混乱していますか?
すべてのシャードには独自のインデックス (このシャード内のドキュメントのみを含む) があり、それらは並行してアクセスされ (すべてのシャードは独自のローカル インデックス シャードを読み取ります)、結果がマージされます。これはランダム読み取りではなく、複数の並列インデックス読み取りです。単一のシャードから見ると、これは通常のインデックス アクセスと同じように見えます。
このインデックス シャーディングは、セカンダリ インデックスがシャーディング環境で一意にならない理由でもあります (一意性を保証できる単一のグローバル インデックスはありません)。