sql >> データベース >  >> NoSQL >> MongoDB

PostgreSQLとMongoDBWHEREIN条件

    クエリの実行時間の違いは、最初の実行でディスクからさらに8kBブロックを読み取る必要があるためです。shared read=631496と比較してください。 およびshared read=30359

    PostgreSQLは、WHEREのインデックスを使用しないことを決定します 条件ですが、ORDER BYをサポートするインデックス 。 INのために注意してください WHEREの両方に1つのインデックスを使用することはできません 条件とORDER BY –これはWHEREでのみ可能です =を使用する条件 比較演算子として。

    したがって、PostgreSQLは選択を行う必要があり、おそらく間違った選択をします。その統計はオプティマイザにWHEREを満たす行が多数あることを示しているためです。 条件では、ORDER BYの行を読み取ることを決定します WHEREと一致しないものを注文して破棄します 100個の結果行が見つかるまで条件を設定します。残念ながら、一致する行がテーブルの先頭に近くないようであり、PostgreSQLは多くの行をスキャンする必要があります(Rows Removed by Filter: 17276154

    WHEREのインデックススキャンを使用するには 条件、ORDER BYを変更します PostgreSQLがインデックスを使用できないようにするための句:

    ORDER BY datetime + INTERVAL '0 seconds' DESC
    

    ここでは複数列のインデックスを使用する必要がないため、最適なインデックスは次のようになります

    CREATE INDEX ON report (sensor_id);
    


    1. Mongooseを使用してMongoDBAtlasデータベースで読み取り/書き込みできません

    2. Kubernetesから透過的な巨大ページを無効にする

    3. MeteorSubscribeはコレクションのソート順を更新しません

    4. macOSCatalinaでMongoDB/data/dbディレクトリを作成できません