sql >> データベース >  >> RDS >> PostgreSQL

Postgresはタイムスタンプインデックスを無視しています、なぜですか?

    別のことを試してみましょう。私はこれを「答え」として提案しているだけです。その長さのため、コメントをフォーマットすることはできません。交差する必要のある一連のサブセットとして、モジュール式にクエリにアプローチしましょう。これらのそれぞれが実行されるのにかかる時間を見てみましょう(報告してください)。 t1とt2をタイムスタンプに置き換えます。各クエリが前のクエリに基づいて構築され、前のクエリが「インラインビュー」になることに注意してください。

    編集:また、ネットワークテーブルの列を確認してください。

    1

     select PM.receiver_id from private_messages PM
     where PM.create_at between (t1 and t2)
    

    2

     select U.id, U.network_id from users U
     join
     (
       select PM.receiver_id from private_messages PM 
       where PM.create_at between (t1 and t2)
     ) as FOO
     on U.id = FOO.receiver_id
    

    3

    select N.* from networks N
    join
    (
    select U.id, U.network_id from users U
     join
     (
       select PM.receiver_id from private_messages PM 
       where PM.create_at between (t1 and t2)
     ) as FOO
     on U.id = FOO.receiver_id
    ) as BAR
    on N.id = BAR.network_id
    


    1. MySQLにJSONとしてデータを保存する

    2. リレーショナルデータベースと非リレーショナルデータベース–パート2

    3. Active Record&Railsを使用して空になることがあるORDERBY列

    4. アプリケーション、接続プール、PostgreSQL用の1つのセキュリティシステム-LDAPの場合