SlideShare a Scribd company logo
1 of 26
PostgreSQL チューニング ~SQL編~ id:matsuou1
目標 ,[object Object],[object Object],[object Object]
実行計画とは? ,[object Object],[object Object],testdb=# explain select count(id) from master where valid = true; QUERY PLAN ---------------------------------------------------------------------------- Aggregate  (cost=217107.05..217107.06 rows=1 width=0) ->  Seq Scan on master  (cost=0.00..213742.88 rows=1345668 width=0) Filter: valid
ExplainとExplain analyzeの違い ,[object Object],[object Object],[object Object],[object Object],testdb=# explain analyze select count(id) from master where valid = true; QUERY PLAN ------------------------------------------------------------------------------------------------------------ Aggregate  (cost=217107.05..217107.06 rows=1 width=0)          (actual time=2956.265..2956.265 rows=1 loops=1) ->  Seq Scan on master  (cost=0.00..213742.88 rows=1345668 width=0)                    (actual time=0.035..2661.190 rows=1374280 loops=1) Filter: valid Total runtime: 2956.301 ms
実行計画の読み方① ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Aggregate  (cost=217107.05..217107.06 rows=1 width=0) ->  Seq Scan on master  (cost=0.00..213742.88 rows=1345668 width=0) Filter: valid
実行計画の読み方② ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Aggregate  (cost=217107.05..217107.06 rows=1 width=0) ->  Seq Scan on master  (cost=0.00..213742.88 rows=1345668 width=0) Filter: valid
実行計画の読み方③ ,[object Object],[object Object],testdb=# explain select * from place_master p , member m  testdb=# where p.pid = 5 and p.pid = m.pid order by m.id limit 10; QUERY PLAN ----------------------------------------------------------------------------------------- Limit  (cost=517.11..517.13 rows=10 width=638) ->  Sort  (cost=517.11..517.74 rows=252 width=638) Sort Key: f.fid ->  Nested Loop  (cost=0.00..511.66 rows=252 width=638) ->  Index Scan using place_master_pid on place_master p  (cost=0.00..4.41 rows=1 width=599) Index Cond: (pid = 5) ->  Index Scan using member_pid on member m  (cost=0.00..504.73 rows=252 width=39) Index Cond: (m.pid = 5) ① ② ③ ④ ⑤
実行計画の読み方④ - 1 データ取得 なし リレーション内のビットマップをメモリ内で作成し、スキャンする Bitmap Index Scan なし インデックスを使用してスキャン 大きいテーブルでは SeqScan より早い Index Scan なし 最初から最後のページまでスキャン 条件によらず全ての行をチェック 大きいテーブルだと遅い Seq Scan 開始コスト 説明 演算子
実行計画の読み方④ - 2 テーブル結合 あり 2つのデータセットを結合 データセットはあらかじめソートが必要 Merge Join あり 一方の入力からハッシュテーブルを作成し、二つの入力を比較する INNER JOIN と OUTER JOIN と同時に使用される Hash Join なし 2 つのテーブルを結合 INNER JOIN と LEFT OUTER JOIN 外部テーブルをスキャンし、内部テーブルにマッチするものを取得 インデックスが無い場合は遅いかも Nested Loop 開始コスト 説明 演算子
実行計画の読み方④ - 3 その他 あり Count 、 sum 、 max 等の集合関数 Aggregate あり Row は指定した行数 Offset を追加すると、少しだけ開始コストが必要になる Limit あり 取得したデータのソート処理 Sort 開始コスト 説明 演算子
遅いSQLを特定するには? ,[object Object],[object Object],[object Object],[object Object]
遅いSQLの特定方法① ,[object Object],SELECT pid, start, now() - start AS lap, current_query FROM (SELECT backendid, pg_stat_get_backend_pid(S.backendid) AS pid, pg_stat_get_backend_activity_start(S.backendid) AS start, pg_stat_get_backend_activity(S.backendid) AS current_query FROM (SELECT pg_stat_get_backend_idset() AS backendid) AS S ) AS S WHERE current_query <> '<IDLE>' ORDER BY lap DESC; pid  |  start  |  lap  | current_query -------+------------------------+------------------+---------------------------------------- 16867 | 2008-12-24 16:49:54.00 | -00:00:02.000238 | SELECT * FROM master  WHERE id = $1 AND valid = true  LIMIT 1
遅いSQLの特定方法② ,[object Object],[object Object],[object Object],2008-09-01 00:00:54 JST  LOG:  duration: 11098.465 ms  statement: SELECT count(id) FROM master
SQLチューニングのポイント ,[object Object],[object Object],[object Object],[object Object]
直積結合の回避 ,[object Object],[object Object],tableA = 1000 件、  tableB = 2 万件 の直積結合 1,000 * 20,000 = 20,000,000 2000 万件処理されてしまう が、結果が正しいと気付かない事も。 データ量が増加すれば、致命的な性能劣化に
直積結合の回避 ,[object Object],[object Object],[object Object],結合条件が漏れてないか、 SQL に無理がないか要確認
インデックスを使う ,[object Object],[object Object],インデックスを使用しないと、 テーブルサイズに比例して性能が劣化
インデックスを使う ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],WHERE SUBSTR(COL1, 1, 1) = ‘A’  ( 左辺に関数を使用 ) WHERE COL1 * 1.05 > 5000 ( 左辺に計算式を使用 ) WHERE COL1 != 10000 (NOT EQUAL を使用 ) WHERE COL1 LIKE ‘%hoge%’ ( 中間一致検索を使用 )
テーブルの結合数制限 ,[object Object],[object Object],[object Object],8! = 40,320 7! = 5,040 6! = 720 5! = 120 4! = 24 3! = 6 最適な実行計画を立てるのに時間がかかる
JOINのテーブル数制限 ,[object Object],[object Object],[object Object],1 SQL で JOIN する表数は最大で 6 までに抑える
ソート処理の削減 ,[object Object],データ件数が増えてくると、 ソート処理も高コストになる
ソート処理の削減 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
空気が読める開発者になるために ,[object Object],[object Object],[object Object],[object Object]
[object Object],もうちょっとだけ続くんじゃ
SQLチューニング 都市伝説① ,[object Object],[object Object],8.3からインデックス使用可能に! testdb=# explain select count(id) from master where mail is null; QUERY PLAN ------------------------------------------------------------------------------------------ Aggregate  (cost=4.90..4.91 rows=1 width=4) ->  Index Scan using master_mail on master  (cost=0.00..4.90 rows=1 width=4) Index Cond: (mail IS NULL)
SQLチューニング 都市伝説② ,[object Object],testdb=# explain select uid from master where id = '1' or uid = '5' or uid = '10'; QUERY PLAN ------------------------------------------------------------------------------------- Bitmap Heap Scan on master  (cost=7.64..13.68 rows=3 width=4) Recheck Cond: ((id = 1) OR (id = 5) OR (id = 10)) ->  BitmapOr  (cost=7.64..7.64 rows=3 width=0) ->  Bitmap Index Scan on master_pkey  (cost=0.00..2.54 rows=1 width=0) Index Cond: (id = 1) ->  Bitmap Index Scan on master_pkey  (cost=0.00..2.54 rows=1 width=0) Index Cond: (id = 5) ->  Bitmap Index Scan on master_pkey  (cost=0.00..2.54 rows=1 width=0) Index Cond: (id = 10) testdb=# explain select uid from master where id in ('1' , '5' , '10'); QUERY PLAN ------------------------------------------------------------------------------- Bitmap Heap Scan on master  (cost=7.06..13.09 rows=3 width=4) Recheck Cond: (uid = ANY ('{1,5,10}'::integer[])) ->  Bitmap Index Scan on master_pkey  (cost=0.00..7.06 rows=3 width=0) Index Cond: (id = ANY ('{1,5,10}'::integer[]))

More Related Content

What's hot

プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法
Takuya Akiba
 

What's hot (20)

pg_bigm(ピージーバイグラム)を用いた全文検索のしくみ
pg_bigm(ピージーバイグラム)を用いた全文検索のしくみpg_bigm(ピージーバイグラム)を用いた全文検索のしくみ
pg_bigm(ピージーバイグラム)を用いた全文検索のしくみ
 
PostgreSQL:行数推定を読み解く
PostgreSQL:行数推定を読み解くPostgreSQL:行数推定を読み解く
PostgreSQL:行数推定を読み解く
 
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL14の pg_stat_statements 改善(第23回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料)
PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料)PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料)
PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料)
 
PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQL運用管理入門
PostgreSQL運用管理入門PostgreSQL運用管理入門
PostgreSQL運用管理入門
 
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
MySQLアーキテクチャ図解講座
MySQLアーキテクチャ図解講座MySQLアーキテクチャ図解講座
MySQLアーキテクチャ図解講座
 
pg_bigm(ピージー・バイグラム)を用いた全文検索のしくみ(後編)
pg_bigm(ピージー・バイグラム)を用いた全文検索のしくみ(後編)pg_bigm(ピージー・バイグラム)を用いた全文検索のしくみ(後編)
pg_bigm(ピージー・バイグラム)を用いた全文検索のしくみ(後編)
 
NAND Flash から InnoDB にかけての話(仮)
NAND Flash から InnoDB にかけての話(仮)NAND Flash から InnoDB にかけての話(仮)
NAND Flash から InnoDB にかけての話(仮)
 
Lt 関数の変動性分類についておさらいしてみる。
Lt 関数の変動性分類についておさらいしてみる。Lt 関数の変動性分類についておさらいしてみる。
Lt 関数の変動性分類についておさらいしてみる。
 
プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法
 
pg_bigmを用いた全文検索のしくみ(前編)
pg_bigmを用いた全文検索のしくみ(前編)pg_bigmを用いた全文検索のしくみ(前編)
pg_bigmを用いた全文検索のしくみ(前編)
 
あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界あなたの知らないPostgreSQL監視の世界
あなたの知らないPostgreSQL監視の世界
 
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
PostgreSQL 12は ここがスゴイ! ~性能改善やpluggable storage engineなどの新機能を徹底解説~ (NTTデータ テクノ...
 
さいきんの InnoDB Adaptive Flushing (仮)
さいきんの InnoDB Adaptive Flushing (仮)さいきんの InnoDB Adaptive Flushing (仮)
さいきんの InnoDB Adaptive Flushing (仮)
 
1072: アプリケーション開発を加速するCUDAライブラリ
1072: アプリケーション開発を加速するCUDAライブラリ1072: アプリケーション開発を加速するCUDAライブラリ
1072: アプリケーション開発を加速するCUDAライブラリ
 
PostgreSQL実行計画入門@関西PostgreSQL勉強会
PostgreSQL実行計画入門@関西PostgreSQL勉強会PostgreSQL実行計画入門@関西PostgreSQL勉強会
PostgreSQL実行計画入門@関西PostgreSQL勉強会
 
pg_trgmと全文検索
pg_trgmと全文検索pg_trgmと全文検索
pg_trgmと全文検索
 

Viewers also liked

[B14] PostgreSQLのサポート業務でわかった設計・運用のハマりどころ by Takahiro sugiyama
[B14] PostgreSQLのサポート業務でわかった設計・運用のハマりどころ by Takahiro sugiyama[B14] PostgreSQLのサポート業務でわかった設計・運用のハマりどころ by Takahiro sugiyama
[B14] PostgreSQLのサポート業務でわかった設計・運用のハマりどころ by Takahiro sugiyama
Insight Technology, Inc.
 
SQLアンチパターン(インデックスショットガン)
SQLアンチパターン(インデックスショットガン)SQLアンチパターン(インデックスショットガン)
SQLアンチパターン(インデックスショットガン)
Tomoaki Uchida
 
Hisham Muhamed Tilbete - Mrekullia e Kur'anit në çështje të astronomisë
Hisham Muhamed Tilbete - Mrekullia e Kur'anit në çështje të astronomisëHisham Muhamed Tilbete - Mrekullia e Kur'anit në çështje të astronomisë
Hisham Muhamed Tilbete - Mrekullia e Kur'anit në çështje të astronomisë
Libra Islame
 
Describe
DescribeDescribe
Describe
silmb
 

Viewers also liked (20)

PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
 
まずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニングまずやっとくPostgreSQLチューニング
まずやっとくPostgreSQLチューニング
 
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
PostgreSQLアーキテクチャ入門(INSIGHT OUT 2011)
 
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
 
使ってみませんか?pg hint_plan
使ってみませんか?pg hint_plan使ってみませんか?pg hint_plan
使ってみませんか?pg hint_plan
 
[B14] PostgreSQLのサポート業務でわかった設計・運用のハマりどころ by Takahiro sugiyama
[B14] PostgreSQLのサポート業務でわかった設計・運用のハマりどころ by Takahiro sugiyama[B14] PostgreSQLのサポート業務でわかった設計・運用のハマりどころ by Takahiro sugiyama
[B14] PostgreSQLのサポート業務でわかった設計・運用のハマりどころ by Takahiro sugiyama
 
使ってみませんか?pg_hint_plan
使ってみませんか?pg_hint_plan使ってみませんか?pg_hint_plan
使ってみませんか?pg_hint_plan
 
TPC-DSから学ぶPostgreSQLの弱点と今後の展望
TPC-DSから学ぶPostgreSQLの弱点と今後の展望TPC-DSから学ぶPostgreSQLの弱点と今後の展望
TPC-DSから学ぶPostgreSQLの弱点と今後の展望
 
SQLアンチパターン(インデックスショットガン)
SQLアンチパターン(インデックスショットガン)SQLアンチパターン(インデックスショットガン)
SQLアンチパターン(インデックスショットガン)
 
Nvidia GTC 2014 Talk
Nvidia GTC 2014 TalkNvidia GTC 2014 Talk
Nvidia GTC 2014 Talk
 
جای خالی مدیر ارشد برند در شرکت های ایرانی
جای خالی مدیر ارشد برند در شرکت های ایرانیجای خالی مدیر ارشد برند در شرکت های ایرانی
جای خالی مدیر ارشد برند در شرکت های ایرانی
 
Hisham Muhamed Tilbete - Mrekullia e Kur'anit në çështje të astronomisë
Hisham Muhamed Tilbete - Mrekullia e Kur'anit në çështje të astronomisëHisham Muhamed Tilbete - Mrekullia e Kur'anit në çështje të astronomisë
Hisham Muhamed Tilbete - Mrekullia e Kur'anit në çështje të astronomisë
 
新浪微博的BigPipe后端实现技术分享——11月26日淘宝aDev技术沙龙
新浪微博的BigPipe后端实现技术分享——11月26日淘宝aDev技术沙龙新浪微博的BigPipe后端实现技术分享——11月26日淘宝aDev技术沙龙
新浪微博的BigPipe后端实现技术分享——11月26日淘宝aDev技术沙龙
 
ΒΑΚΑΛΟΥΔΗ - ΠΡΟΣΚΛΗΣΗ
ΒΑΚΑΛΟΥΔΗ - ΠΡΟΣΚΛΗΣΗΒΑΚΑΛΟΥΔΗ - ΠΡΟΣΚΛΗΣΗ
ΒΑΚΑΛΟΥΔΗ - ΠΡΟΣΚΛΗΣΗ
 
Tesla Croatia
Tesla CroatiaTesla Croatia
Tesla Croatia
 
Digital Marketing
Digital MarketingDigital Marketing
Digital Marketing
 
Gianni Marconato - Costruire conoscenza professionale in rete attraverso la n...
Gianni Marconato - Costruire conoscenza professionale in rete attraverso la n...Gianni Marconato - Costruire conoscenza professionale in rete attraverso la n...
Gianni Marconato - Costruire conoscenza professionale in rete attraverso la n...
 
Describe
DescribeDescribe
Describe
 
Međuinduktivitet i zračni transformatori
Međuinduktivitet i zračni transformatoriMeđuinduktivitet i zračni transformatori
Međuinduktivitet i zračni transformatori
 
Tutorial for the ReportLinker App
Tutorial for the ReportLinker AppTutorial for the ReportLinker App
Tutorial for the ReportLinker App
 

Similar to 20090107 Postgre Sqlチューニング(Sql編)

HandlerSocket plugin for MySQL
HandlerSocket plugin for MySQLHandlerSocket plugin for MySQL
HandlerSocket plugin for MySQL
akirahiguchi
 
Maatkit で MySQL チューニング
Maatkit で MySQL チューニングMaatkit で MySQL チューニング
Maatkit で MySQL チューニング
Kensuke Nagae
 
Handlersocket 20110517
Handlersocket 20110517Handlersocket 20110517
Handlersocket 20110517
akirahiguchi
 

Similar to 20090107 Postgre Sqlチューニング(Sql編) (20)

Pgunconf 20121212-postgeres fdw
Pgunconf 20121212-postgeres fdwPgunconf 20121212-postgeres fdw
Pgunconf 20121212-postgeres fdw
 
RailsエンジニアのためのSQLチューニング速習会
RailsエンジニアのためのSQLチューニング速習会RailsエンジニアのためのSQLチューニング速習会
RailsエンジニアのためのSQLチューニング速習会
 
HandlerSocket plugin for MySQL
HandlerSocket plugin for MySQLHandlerSocket plugin for MySQL
HandlerSocket plugin for MySQL
 
20190119 aws-study-pg-extension
20190119 aws-study-pg-extension20190119 aws-study-pg-extension
20190119 aws-study-pg-extension
 
Jpug study-pq 20170121
Jpug study-pq 20170121Jpug study-pq 20170121
Jpug study-pq 20170121
 
PostgreSQL13 新機能紹介
PostgreSQL13 新機能紹介PostgreSQL13 新機能紹介
PostgreSQL13 新機能紹介
 
Maatkit で MySQL チューニング
Maatkit で MySQL チューニングMaatkit で MySQL チューニング
Maatkit で MySQL チューニング
 
20181110 fok2018-pg-extension
20181110 fok2018-pg-extension20181110 fok2018-pg-extension
20181110 fok2018-pg-extension
 
PostgreSQL 12の話
PostgreSQL 12の話PostgreSQL 12の話
PostgreSQL 12の話
 
Let's scale-out PostgreSQL using Citus (Japanese)
Let's scale-out PostgreSQL using Citus (Japanese)Let's scale-out PostgreSQL using Citus (Japanese)
Let's scale-out PostgreSQL using Citus (Japanese)
 
MySQL SQL tuning
MySQL SQL tuningMySQL SQL tuning
MySQL SQL tuning
 
generate_series関数使い込み
generate_series関数使い込みgenerate_series関数使い込み
generate_series関数使い込み
 
Chugoku db 17th-postgresql-9.6
Chugoku db 17th-postgresql-9.6Chugoku db 17th-postgresql-9.6
Chugoku db 17th-postgresql-9.6
 
2019年度 若手技術者向け講座 実行計画
2019年度 若手技術者向け講座 実行計画2019年度 若手技術者向け講座 実行計画
2019年度 若手技術者向け講座 実行計画
 
YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)
YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)
YugabyteDBの実行計画を眺める(NewSQL/分散SQLデータベースよろず勉強会 #3 発表資料)
 
Vertica 7.2.2 新機能
Vertica 7.2.2 新機能Vertica 7.2.2 新機能
Vertica 7.2.2 新機能
 
Kof2016 postgresql-9.6
Kof2016 postgresql-9.6Kof2016 postgresql-9.6
Kof2016 postgresql-9.6
 
Handlersocket 20110517
Handlersocket 20110517Handlersocket 20110517
Handlersocket 20110517
 
DBパフォーマンス・チューニング
DBパフォーマンス・チューニングDBパフォーマンス・チューニング
DBパフォーマンス・チューニング
 
Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。
Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。
Linux 対応だけじゃない!! sql server 2017 こんな機能が追加されています。
 

More from Hiromu Shioya

クマとジャーニーマンとステマ
クマとジャーニーマンとステマクマとジャーニーマンとステマ
クマとジャーニーマンとステマ
Hiromu Shioya
 

More from Hiromu Shioya (20)

不惑の生存戦略
不惑の生存戦略不惑の生存戦略
不惑の生存戦略
 
勉強会なう
勉強会なう勉強会なう
勉強会なう
 
LTの技術
LTの技術LTの技術
LTの技術
 
珍獣 素人 そして くのいち
珍獣 素人 そして くのいち珍獣 素人 そして くのいち
珍獣 素人 そして くのいち
 
夏夏
 
Tupperware
TupperwareTupperware
Tupperware
 
Rubyistが歩むべき道への道
Rubyistが歩むべき道への道Rubyistが歩むべき道への道
Rubyistが歩むべき道への道
 
自宅で本気を出さされた
自宅で本気を出さされた自宅で本気を出さされた
自宅で本気を出さされた
 
クマとデバッグを
クマとデバッグをクマとデバッグを
クマとデバッグを
 
クマとジャーニーマンとステマ
クマとジャーニーマンとステマクマとジャーニーマンとステマ
クマとジャーニーマンとステマ
 
お前の本気を見せてみろ!
お前の本気を見せてみろ!お前の本気を見せてみろ!
お前の本気を見せてみろ!
 
Git道場を開催してきた
Git道場を開催してきたGit道場を開催してきた
Git道場を開催してきた
 
三周まわったおれたちのアジャイル
三周まわったおれたちのアジャイル三周まわったおれたちのアジャイル
三周まわったおれたちのアジャイル
 
俺たちの目指すモバイルの新たな地平
俺たちの目指すモバイルの新たな地平俺たちの目指すモバイルの新たな地平
俺たちの目指すモバイルの新たな地平
 
2011年の漢字
2011年の漢字2011年の漢字
2011年の漢字
 
ベジェ曲線を書いてみた
ベジェ曲線を書いてみたベジェ曲線を書いてみた
ベジェ曲線を書いてみた
 
オススメの技術書
オススメの技術書オススメの技術書
オススメの技術書
 
はじめて学ぶバージョン管理とGit
はじめて学ぶバージョン管理とGitはじめて学ぶバージョン管理とGit
はじめて学ぶバージョン管理とGit
 
肉とRubyとわたし
肉とRubyとわたし肉とRubyとわたし
肉とRubyとわたし
 
祝辞
祝辞祝辞
祝辞
 

Recently uploaded

Recently uploaded (7)

2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
 
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdfネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
 
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイルLoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
 
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアル
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアルLoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアル
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアル
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 

20090107 Postgre Sqlチューニング(Sql編)

  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8. 実行計画の読み方④ - 1 データ取得 なし リレーション内のビットマップをメモリ内で作成し、スキャンする Bitmap Index Scan なし インデックスを使用してスキャン 大きいテーブルでは SeqScan より早い Index Scan なし 最初から最後のページまでスキャン 条件によらず全ての行をチェック 大きいテーブルだと遅い Seq Scan 開始コスト 説明 演算子
  • 9. 実行計画の読み方④ - 2 テーブル結合 あり 2つのデータセットを結合 データセットはあらかじめソートが必要 Merge Join あり 一方の入力からハッシュテーブルを作成し、二つの入力を比較する INNER JOIN と OUTER JOIN と同時に使用される Hash Join なし 2 つのテーブルを結合 INNER JOIN と LEFT OUTER JOIN 外部テーブルをスキャンし、内部テーブルにマッチするものを取得 インデックスが無い場合は遅いかも Nested Loop 開始コスト 説明 演算子
  • 10. 実行計画の読み方④ - 3 その他 あり Count 、 sum 、 max 等の集合関数 Aggregate あり Row は指定した行数 Offset を追加すると、少しだけ開始コストが必要になる Limit あり 取得したデータのソート処理 Sort 開始コスト 説明 演算子
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.