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

インデックスを使用したpostgresのクエリプラン

    この計画:

    Index Scan using Designation_place_name on myTable  (cost=0.00..67701.36 rows=22043 width=27) (actual time=0.061..3.796 rows=3376 loops=1)
       Index Cond: ((relation)::text = 'Manager'::text)
       Filter: (timeOfJoining > '1930-10-10 00:00:00+05:53:20'::timestamp with time zone)
     Total runtime: 4.082 ms
    (4 rows)
    

    基本的には:

    1. Designation_place_nameインデックスの使用
    2. インデックス条件の関係に適合する行を見つける='Manager'
    3. timeOfJoining基準に一致する行のみを保持します

    ステップ2では、ディスクページは順番にではなく「ランダムに」アクセスされます。つまり、インデックスにはディスク上の一致する行のアドレスが含まれ、Postgresはインデックスで示された順序でこれらのアドレスにアクセスします。 (これはコストがかかる可能性があります。ところで、プランナーは、テーブル全体を読み取る(seqスキャン)か、インデックスで示される順序を無視してページ上のすべての行をバッチフェッチする(ビットマップインデックススキャン)方が安いと判断する場合があります。)

    注:そのクエリには(テーブル)結合はありません。 1つあれば、余分なインデントレベルが表示されます。最もインデントされているものから最もインデントされていないものまで読んでください。



    1. MySQL初心者向けのDevOpsデータベース用語集

    2. CakePHPHTMLqouteエンコーディングの問題

    3. mysqlはアサーションのシミュレーションをトリガーします

    4. 同じページのphpとhtmlフォーム