クエリ、テーブル、ビュー

PostgreSQLでクエリ性能を改善する

Amy McCarty

Instructor

クエリ

 

SELECT *
FROM ...
  • テーブル
    • 基本テーブル
    • 一時テーブル
  • ビュー
    • ビュー
    • マテリアライズド・ビュー
PostgreSQLでクエリ性能を改善する

基本テーブル

 

説明 整然としたストレージ
内容 データ
読み込み ETL(抽出・変換・ロード)プロセス
ソース 人事システム、顧客管理、アンケート収集など
PostgreSQLでクエリ性能を改善する

一時テーブル

 

説明 整然(行・列)のストレージ
内容 データ
読み込み クエリ(一時的)
ソース 既存の基本テーブル

 

CREATE TEMP TABLE my_temptable AS 
SELECT * 
FROM survey_monkey_results
WHERE survey_date >= '2019-01-01';

SELECT * FROM my_temptable
PostgreSQLでクエリ性能を改善する

標準ビュー

 

説明 保存されたクエリ
内容 手順/ビュー定義
読み込み なし
ソース 既存の基本テーブル

 

ビューの利点

  • よく結合するテーブルを統合
  • 計算列
    • 集計指標
  • テーブルの一部だけ表示
    • 例: 従業員は表示、給与は非表示
PostgreSQLでクエリ性能を改善する

マテリアライズド・ビュー

 

説明 保存されたクエリ ビュー
内容 データ テーブル
読み込み 更新プロセス テーブル
ソース 既存の基本テーブル ビュー

マテリアライズド・ビューの利点

  • ビューと同様
    • 高速
PostgreSQLでクエリ性能を改善する

FROM 句で参照する要素のまとめ

目的
テーブル 基本ストレージ
一時テーブル 大きなテーブルのクエリを高速化
ビュー 複雑なロジックや計算列
マテリアライズド・ビュー パフォーマンスを落とす複雑なロジックに対応
PostgreSQLでクエリ性能を改善する

information_schema

  • データベースのメタデータを提供
  • 多くのDBに存在
    • PostgreSQL、SQL Server、MySQL

 

SELECT table_type 
FROM information_schema.tables 
WHERE table_catalog = 'orders_schema' 
AND table_name = 'customer_table'

 

 

 

  • BASE TABLE : 基本テーブル
  • LOCAL TEMPORARY : 一時テーブル
  • VIEW : ビュー/マテリアライズド・ビュー
PostgreSQLでクエリ性能を改善する

Let's practice!

PostgreSQLでクエリ性能を改善する

Preparing Video For Download...