結合について

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

Amy McCarty

Instructor

コース概要

  • 結合、サブクエリ、一時テーブルを含むクエリ構造
  • データの制限と集計
  • データベースの保存特性と最適化ツール
  • クエリ計画と実行
PostgreSQLでクエリ性能を改善する

クエリプランナ

クエリ

  • SQLの指示

レストランの給仕

クエリ(実行)計画

  • 実際の手順

大きな鍋を囲む複数の料理人

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

クエリプランナ

料理を運ぶ給仕

飲み物を運ぶ給仕

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

 

結合とは?

  • 複数テーブルを結合
PostgreSQLでクエリ性能を改善する

 

結合とは?

  • 複数テーブルを結合

なぜ結合する?

  • 参照テーブルの照合
  • データを統合

方法は?

  • 内部結合と外部結合

 

Sales ID Order Dt Amt Cust No
01 2019-02-02 145.30 911

 

ID Name Customer Since
911 Jim Smith 2019-01-01

 

Sales ID Order Dt Amt Name
01 2019-02-02 145.30 Jim Smith
PostgreSQLでクエリ性能を改善する

内部結合

4件のアスリートと国の表。Jack - AUT、Aditya - IND、Mikhail - RUS、Javier - MEX。国テーブルは4件で国、名称、人口(百万)。AUT - Austria - 9、IND - India - 1,339、RUS - Russia - 145、BRA - Brazil - 209

SELECT *
FROM athletes a
INNER JOIN countries c
ON a.country = c.country

 

 

 

Athlete Country Country1 Name Pop (mil)
Jack AUT AUT Austria 9
Aditya IND IND India 1,339
Mikhail RUS RUS Russia 145
PostgreSQLでクエリ性能を改善する

内部結合

4件のアスリートと国の表。Jack - AUT、Aditya - IND、Mikhail - RUS、Javier - MEX。最後の行が太字。国テーブルは4件でAUT - Austria - 9、IND - India - 1,339、RUS - Russia - 145、BRA - Brazil - 209。最後の行が太字。

SELECT *
FROM athletes a
INNER JOIN countries c
ON a.country = c.country

 

 

 

Athlete Country Country1 Name Pop (mil)
Jack AUT AUT Austria 9
Aditya IND IND India 1,339
Mikhail RUS RUS Russia 145
PostgreSQLでクエリ性能を改善する

USING を用いた内部結合

4件のアスリートと国の表。Jack - AUT、Aditya - IND、Mikhail - RUS、Javier - MEX。国テーブルは4件で国、名称、人口(百万)。AUT - Austria - 9、IND - India - 1,339、RUS - Russia - 145、BRA - Brazil - 209

SELECT *
FROM athletes
INNER JOIN countries
USING (country)

 

 

 

Athlete Country Name Pop (mil)
Jack AUT Austria 9
Aditya IND India 1,339
Mikhail RUS Russia 145
PostgreSQLでクエリ性能を改善する

USING を用いた内部結合

4件のアスリートと国の表。Jack - AUT、Aditya - IND、Mikhail - RUS、Javier - MEX。最後の行が太字。国テーブルは4件でAUT - Austria - 9、IND - India - 1,339、RUS - Russia - 145、BRA - Brazil - 209。最後の行が太字。

SELECT *
FROM athletes
INNER JOIN countries
USING (country)

 

 

 

Athlete Country Name Pop (mil)
Jack AUT Austria 9
Aditya IND India 1,339
Mikhail RUS Russia 145
PostgreSQLでクエリ性能を改善する

左外部結合

4件のアスリートと国の表。Jack - AUT、Aditya - IND、Mikhail - RUS、Javier - MEX。国テーブルは4件で国、名称、人口(百万)。AUT - Austria - 9、IND - India - 1,339、RUS - Russia - 145、BRA - Brazil - 209

SELECT *
FROM athletes a
LEFT JOIN countries c
ON a.country = c.country

 

 

Athlete Country Country1 Name Pop (mil)
Jack AUT AUT Austria 9
Aditya IND IND India 1,339
Mikhail RUS RUS Russia 145
Javier MEX
PostgreSQLでクエリ性能を改善する

左外部結合

4件のアスリートと国の表。Jack - AUT、Aditya - IND、Mikhail - RUS、Javier - MEX。国テーブルは4件でAUT - Austria - 9、IND - India - 1,339、RUS - Russia - 145、BRA - Brazil - 209。最後の行が太字。

SELECT *
FROM athletes a
LEFT JOIN countries c
ON a.country = c.country

 

 

Athlete Country Country1 Name Pop (mil)
Jack AUT AUT Austria 9
Aditya IND IND India 1,339
Mikhail RUS RUS Russia 145
Javier MEX
PostgreSQLでクエリ性能を改善する

右外部結合

4件のアスリートと国の表。Jack - AUT、Aditya - IND、Mikhail - RUS、Javier - MEX。国テーブルは4件で国、名称、人口(百万)。AUT - Austria - 9、IND - India - 1,339、RUS - Russia - 145、BRA - Brazil - 209

SELECT *
FROM athletes a
RIGHT JOIN countries c
ON a.country = c.country

 

 

Athlete Country Country1 Name Pop (mil)
Jack AUT AUT Austria 9
Aditya IND IND India 1,339
Mikhail RUS RUS Russia 145
BRA Brazil 209
PostgreSQLでクエリ性能を改善する

右外部結合

4件のアスリートと国の表。Jack - AUT、Aditya - IND、Mikhail - RUS、Javier - MEX。最後の行が太字。国テーブルは4件でAUT - Austria - 9、IND - India - 1,339、RUS - Russia - 145、BRA - Brazil - 209。

SELECT *
FROM athletes a
RIGHT JOIN countries c
ON a.country = c.country

 

 

Athlete Country Country1 Name Pop (mil)
Jack AUT AUT Austria 9
Aditya IND IND India 1,339
Mikhail RUS RUS Russia 145
BRA Brazil 209
PostgreSQLでクエリ性能を改善する

完全外部結合

SELECT *
FROM athletes a
FULL OUTER JOIN countries c
ON a.country = c.country
  • クエリ(実行)計画

大きな鍋を囲む複数の料理人

  • クエリプランナを制約
Athlete Nme Country Country1 Name Pop (mil)
Jack AUT AUT Austria 9
Aditya IND IND India 1,339
Mikhail RUS RUS Russia 145
Javier MEX
BRA Brazil 209
PostgreSQLでクエリ性能を改善する

Passons à la pratique !

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

Preparing Video For Download...