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

PostgreSQLがインデックス付きの列に対してシーケンシャルスキャンを実行するのはなぜですか?

    SELECTがテーブル内のすべての行の約5〜10%を超える値を返す場合、シーケンシャルスキャンはインデックススキャンよりもはるかに高速です。

    これは、インデックススキャンにいくつかが必要なためです。 各行のIO操作(インデックスで行を検索し、ヒープから行を取得します)。シーケンシャルスキャンでは、行ごとに1つのIOしか必要ありませんが、ディスク上のブロック(ページ)に複数の行が含まれているため、1回のIO操作で複数の行をフェッチできます。

    ところで:これは他のDBMSにも当てはまります-「インデックスのみのスキャン」を除いたいくつかの最適化(ただし、SELECT *の場合、そのようなDBMSが「インデックスのみのスキャン」に進む可能性はほとんどありません)



    1. 日付から曜日の名前を取得するにはどうすればよいですか?

    2. Ubuntu14.04でphpMyAdminを使用してMySQLをインストールする方法

    3. hibernateでネイティブSQLを実行する

    4. OraclePartitionedSequence