Upgrade to Pro — share decks privately, control downloads, hide ads and more …

社内LT2019/11/7

 社内LT2019/11/7

Kento Matsumoto

November 07, 2019
Tweet

More Decks by Kento Matsumoto

Other Decks in Programming

Transcript

  1. テーブルとスキーマについて -- スキーマ作成 CREATE SCHEMA schema1; -- テーブル作成 CREATE TABLE

    schema1.table( Id INTEGER ); -- スキーマの優先順位の調べ方 show search_path; Postgresには、データベースの中にスキーマという概念が存在する ※MySQLの場合、データベースとスキーマは同じ概念である DB1 DB2 schema1 table table schema1 同一DBに同じテー ブル名が作れる。 スキーマを指定せず に使用する場合 search_pathの順番 で検索される。
  2. 式インデックス Indexに式を設定することができる。(ユニークキーとしても可能) -- インデックス作成 CREATE INDEX users_lower_id_idx ON users (lower(id));

    -- 検索 EXPLAIN SELECT * FROM users WHERE lower(id) = '1'; * 省略 " -> Bitmap Index Scan on users_lower_id_idx (cost=0.00..4.53 rows=33 width=0)" Index Cond: (lower((id)::text) = '1'::text)
  3. Materialized View - SQLの状態を保存することができる - 直接更新できない - 更新するタイミングを指定する必要がある (REFRESH MATERIALIZED

    VIEW viewtable;) - Viewの場合、テーブルの内容を常に反映させるが、一度保存したものを使い回すため、リ ソースを使わないで済む (高速化)。 -- Materialized View 作成 CREATE MATERIALIZED VIEW viewtable AS SELECT * FROM users ORDER BY id LIMIT 10; -- Materialized View 更新 REFRESH MATERIALIZED VIEW viewtable; リアルタイム性が求められないような週次レポートのようなものに最適