10 M 行のデータでテストを行いました。各行には、3 つの整数列と 2 つの文字列列があります。まず、このデータを単一のシャードである mongoDB にインポートします。非インデックス列で db.table.find() を使用して単純な「where」クエリを実行します。クエリは、約 7 秒で 1 行をフェッチします。
同じハードウェアで、メモリ内にある ac# list に同じデータをロードします。while ループを実行して 10M データすべてをスキャンし、単純な equal コントロールを実行して where クエリをエミュレートします。約 650 ミリ秒しかかからず、MongoDB よりもはるかに高速です。
私は 32 GB のマシンを持っているので、mongodb はテーブルのメモリ マップに問題はありません。
mongoDB が非常に遅いのはなぜですか? それは、mongoDB がデータをフル スキャンしにくいデータ構造に保持しているためか、メモリ マッピングがデータを変数に保持するのと同じではないためです。