1

テーブルで複数の(たくさんの!)選択を実行する必要があります(明らかに単純化されています):

libraries_books
---------------
id
library_id
book_id

book_idここで、同じもので異なるものを探しますlibrary_id

今、私は一時テーブルを認識しています:

SELECT id, book_id INTO TEMPORARY tmp_books where library_id=?

次に、必要に応じて、libraries_books の代わりにインデックスを追加しtmp_booksてクエリを実行できますが、よりパフォーマンスの高い方法でこれを実現する別の方法があると感じています。ある?

4

1 に答える 1

0

時期尚早の最適化は諸悪の根源です。PostgreSQL では、次のようにすれば間違いはありません。

  1. データの正規化
  2. 必要ないくつかのテーブルへのインデックスの適用
  3. 必要に応じてインデックスを微調整する

一般に、PostgreSQL には、ユースケースを高速化するためのトリックがたくさんあります。データベースにキャッシュがあるだけでなく、両方が順次スキャンを実行する必要がある場合、同じテーブルに対する選択を並行して実行することもできます (つまり、2 番目のクエリは最初のクエリのピギー バッキングの利点を得ることができます)。スキャン)。

膨大な数のレコードになる場合は、部分インデックスまたはその他の戦略を検討してください。

于 2013-11-16T10:54:03.560 に答える