Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
【統計情報】種類と役割【第1回】
Search
Shin
September 08, 2024
Programming
0
28
【統計情報】種類と役割【第1回】
クエリの処理時間を1秒でも短縮するには、統計情報への理解が必要不可欠です。
そこで、統計情報の最初のとっかかりとして種類と役割についてピックアップしました。
Shin
September 08, 2024
Tweet
Share
More Decks by Shin
See All by Shin
【PostgreSQL】メンテナンス系コマンドの種類
sk8er_boi_shin
0
6
【データベース】統計情報と物理順序
sk8er_boi_shin
0
37
感情を整える習慣で仕事はもっとラクになる
sk8er_boi_shin
0
7
【データベース】RedisとPostgreSQL
sk8er_boi_shin
0
38
【データベース】統計情報と単一カラムのヒストグラム
sk8er_boi_shin
0
9
伝わるプロジェクト_伝わらないプロジェクト.pdf
sk8er_boi_shin
0
4
【データベース】制約の種類と速度検証
sk8er_boi_shin
0
3
【データベース】インデックスの種類と役割
sk8er_boi_shin
0
9
【データベース】統計情報の更新【第3回】
sk8er_boi_shin
0
6
Other Decks in Programming
See All in Programming
組込みだけじゃない!TinyGo で始める無料クラウド開発入門
otakakot
0
230
Android16 Migration Stories ~Building a Pattern for Android OS upgrades~
reoandroider
0
100
kiroとCodexで最高のSpec駆動開発を!!数時間で web3ネイティブなミニゲームを作ってみたよ!
mashharuki
0
140
SpecKitでどこまでできる? コストはどれくらい?
leveragestech
0
690
私達はmodernize packageに夢を見るか feat. go/analysis, go/ast / Go Conference 2025
kaorumuta
2
540
階層構造を表現するデータ構造とリファクタリング 〜1年で10倍成長したプロダクトの変化と課題〜
yuhisatoxxx
3
1k
育てるアーキテクチャ:戦い抜くPythonマイクロサービスの設計と進化戦略
fujidomoe
1
170
CSC305 Lecture 06
javiergs
PRO
0
220
Web フロントエンドエンジニアに開かれる AI Agent プロダクト開発 - Vercel AI SDK を観察して AI Agent と仲良くなろう! #FEC余熱NIGHT
izumin5210
3
520
その面倒な作業、「Dart」にやらせませんか? Flutter開発者のための業務効率化
yordgenome03
1
120
Django Ninja による API 開発効率化とリプレースの実践
kashewnuts
0
1.3k
Go言語はstack overflowの夢を見るか?
logica0419
0
190
Featured
See All Featured
Building Adaptive Systems
keathley
43
2.8k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Large-scale JavaScript Application Architecture
addyosmani
514
110k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.1k
Speed Design
sergeychernyshev
32
1.2k
How to Ace a Technical Interview
jacobian
280
24k
How GitHub (no longer) Works
holman
315
140k
Side Projects
sachag
455
43k
The Power of CSS Pseudo Elements
geoffreycrofte
79
6k
Mobile First: as difficult as doing things right
swwweet
224
10k
Build your cross-platform service in a week with App Engine
jlugia
232
18k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.5k
Transcript
【データベース】 統計情報の役割と種類
目次 1. 統計情報の役割 2. 統計情報の主要な種類 3. 統計情報がクエリに与える影響 4. まとめ
1.統計情報の役割 • 概要 データベースがデータの全体像を把握して クエリを早く実行するために必要なガイド情報
1.統計情報の役割 • 役割 データベースがクエリを最適に実行するために、 フルスキャンやインデックススキャンを 選択する際の判断材料として利用される。
1.統計情報の役割 • 統計情報の例 ◦ テーブルにどれくらいの行があるか ◦ どのカラムにどんな値が多いか ◦ データの分布(平均値、最大値、最小値など)
2.統計情報の主要な種類 • テーブルレベルの統計情報 • カラムレベルの統計情報 • インデックスレベルの統計情報
2.統計情報の主要な種類 • テーブルレベルの統計情報: ◦ 概要 ▪ テーブル全体に関する情報。 ◦ 例 ▪
テーブルの総行数、NULL値の割合、重複度など。 ◦ 用途 ▪ テーブル全体をスキャンするか、インデックスを使うかの判断に利用。 ◦ SQL ▪ SELECT * FROM PEOPLE;
2.統計情報の主要な種類 • カラムレベルの統計情報: ◦ 概要 ▪ 各カラムのデータ分布に関する情報。 ◦ 例 ▪
カラムの値の分布(最小値、最大値、平均値) ▪ ユニークな値の数 ▪ データの頻度(ヒストグラム)など。 ◦ 用途: ▪ WHERE句の条件で、INDEXを使うかどうかを決定するために利用。 ◦ SQL ▪ SELECT * FROM PEOPLE WHERE NAME = ‘田中太郎’;
2.統計情報の主要な種類 • インデックスレベルの統計情報: ◦ 概要 ▪ インデックスに関する情報。 ◦ 例 ▪
インデックスのユニーク度(重複がどのくらいあるか) ▪ リーフレベルの深さ ▪ クラスタリングファクタ(INDEXの順序通りにデータが並んでいるか ) ◦ 用途 ▪ INDEXスキャンか、フルスキャンかを決定する際に利用。 ◦ SQL ▪ CREATE INDEX IDX_PEOPLE_1 ON PEOPLE (NAME, ADDRESS); ▪ SELECT * FROM PEOPLE WHERE NAME = ‘田中太郎’;
3.統計情報がクエリに与える影響 • ユニーク度(ヒストグラム) • 適切なインデックスの有無
3.統計情報がクエリに与える影響 • ユニーク度(ヒストグラム) ◦ データベース Postgresql ◦ テーブル名 PEOPLE ◦ 統計情報は最新の状態 ◦
データ数 400万件 ◦ index ▪ index名:Idx_people_person_id 指定カラム: person_id ▪ index名:Idx_people_duplication_many 指定カラム: duplication_many ◦ カラム ▪ PERSON_ID(INTEGER型)(一意なデータ) ▪ DUPLICATION_MANY(INTEGER型)(重複のあるデータ) • 0 :40万件 • 1 :40万件 • 2 :40万件 • 3 :280万件
3.統計情報がクエリに与える影響 • ユニーク度(ヒストグラム) 一意なデータをフィルタリングした場合
3.統計情報がクエリに与える影響 • ユニーク度(ヒストグラム) 重複のあるデータをフィルタリングした場合 取得結果は多いが、 filterがデータ量 の10%程度のため BitmapHeapScanが選択された。 取得結果がもっと多い場合 (duplication_many=3)の場合はフ
ルスキャンが選択される。
3.統計情報がクエリに与える影響 • 適切なインデックスの有無 ◦ データベース、テーブル名、統計情報最新、データ数の 4項目は先程同様 ◦ index ▪ index名:Idx_duplication_few
指定カラム: duplication_few ◦ カラム ▪ duplication_few(INTEGER型)(一意なデータ) ◦ クエリ ▪ Select * frrom people where duplication_few = 135233;
3.統計情報がクエリに与える影響 • 適切なインデックスの有無 適切なインデックスが存在する場合
3.統計情報がクエリに与える影響 • 適切なインデックスの有無 適切なインデックスが存在しない場合
4.まとめ • FROM、WHERE等を考慮しユニーク度の高いカラムからINDEXに定義 • ヒストグラムを意識したINDEX作成 ◦ 特にユニーク度が高いカラムには INDEXが効果的 ◦ ユニーク度が低くINDEXがあっても時間がかかる場合
▪ パーティション、キャッシュの利用、 LIMIT、OFFSET、非同期等