SlideShare a Scribd company logo
1
インデックス
概要
• インデックスについて学習し、速度を意識したSQL文を記述で
きるようになることを目指します。
2
目次
• インデックスの概要
• 演習問題
• 参考資料(演習問題の実行計画)
3
前提条件
• このテキストの内容はPostgreSQL(バージョン9.6.9)の環境で検証し
たものとなっています。
• テキストと同じ環境で検証する場合はPostgreSQLをインストールし、
事前にデータベース(axizdb)とユーザー(axizuser)を作成してくだ
さい。
4
インデックス
5
インデックス
• インデックスとは
• 簡単に言うと、レコードの検索を高速にする仕組みです。
• 日本語で言うと索引。本の索引と同じ意味。
• 本の中から目的の用語を探すとき、1ページ目から最後のページまで
順番に探していくのは効率が悪いですね。索引を使えば、探したい用
語が載っているページにすぐにたどり着くことできます。
• レコードを検索する場合も、インデックスを参照することで、対象の
レコードがどこにあるかを短時間で見つけることができます。
6
インデックス
• インデックスを学ぶ必要性
• データベースを利用していると、インデックスという言葉がよくでて
きます。
• インデックスの仕組みを詳しく理解していなくても、SQLを記述する
ことはできます。しかし、知らず知らずのうちにパフォーマンスの低
いSQLを書いてしまっている可能性があります。
• インデックスを理解することで、速度を意識したSQLを書くことがで
きるようになります。
7
インデックス
• インデックスの仕組み
• テーブルのレコードもOSから見たらただのファイルです。
• ディスクのブロックに、同じテーブルのレコードが登録されています。
• ディスクには、面番号、トラック番号、ブロック番号があり、その3
つの組み合わせでブロックのアドレスが一意に決まります。
• インデックスには、カラムの値とブロックのアドレスがセットとなっ
ています。本の索引で単語とページがセットになっているイメージで
す。
8
インデックス
• インデックスの種類
大きく分けて3つの種類がある
• B-treeインデックス
• ビットマップインデックス
• ハッシュインデックス
• 最も使用頻度が高いのはB-treeインデックス。
• インデックス作成時に何も指定しない場合は自動的にB-treeインデッ
クスが作成される。
9
インデックス
• インデックスのメリット
• 検索(SELECT文)が速くなる。(ただし、インデックスが適切に使用
されることが前提)
• インデックスのデメリット
• インデックスの容量分、ディスクを圧迫する。
• 追加・修正・削除時の負荷が増える可能性がある。
(インデックス再構築による負荷がかかる)
※ただし、UPDATE文やDELETE文も更新対象のレコードを検索するとき
に内部でSELECT文が使用されているため、速度は上がる可能性がある。
• 多く作りすぎると検索が遅くなる可能性がある。
selectの使用頻度、更新の使用頻度などを考慮して適切なイン
デックス設計を行う。
10
インデックス
• どのインデックスが使用されるのか
• インデックスは、1つのテーブルに対して複数作成することが可能で
す。
• 検索(SELECT文)を実行するとき、どのインデックスが使用されるの
かはDBMSの判断に委ねられます。
• SQL文にヒント句を記述することで、意図的に使用するインデックス
を指定することもできます。
※ヒント句の指定の仕方、使用可能かどうかはDBMSによって異なりま
す。
11
-- Oracleの場合のヒント句の使用
SELECT /*+ INDEX(テーブル名 インデックス名) */ * FROM table1
WHERE name = 'test'
インデックス
• マルチカラムインデックス
• インデックスを作成する場合は、複数のカラムを指定することもでき
ます。
• 複数のカラムの組み合わせで作成したインデックスのことを、マルチ
カラムインデックスといいます。
12
インデックス
• インデックスの作成方法
• CREATE INDEX 文を使用して作成する
• テーブル作成時にPRIMARY KEY 制約を設けている場合は、
主キーに対してのインデックスは自動で作成される。
13
CREATE INDEX <index_name> ON <table_name> (column1, …)
インデックス
• 実習(インデックスの作成)
14
演習問題
インデックスが使われるSQL文はどれか
15
演習問題
16
table1のテーブル定義
table1 インデックス
物理名 型 primary key 1 id
id int 〇 2 name
name varchar(50)
レコードの情報
レコード件数:10000件
データ分布
id:1~10000の連番
name
null:100件
'test':10件
'テスト':9890件
idとnameそれぞれの
カラムにインデック
スが定義されている。
演習問題
• 演習問題(table1)
• それぞれのSQL文について、インデックスが使われるか使われないか
を答えなさい。また、その理由を答えなさい。
17
-- ①
SELECT * FROM table1
WHERE id = 100;
-- ②
SELECT * FROM table1
WHERE id <> 100;
-- ③
SELECT * FROM table1
WHERE id BETWEEN 1 AND 1000;
演習問題
• 演習問題(table1)
18
-- ④
SELECT * FROM table1
WHERE name = 'test';
-- ⑤
SELECT * FROM table1
WHERE name LIKE '%test';
-- ⑥
SELECT * FROM table1
WHERE name LIKE 'test%';
演習問題
• 演習問題(table1)
19
-- ⑦
SELECT * FROM table1
WHERE id = 100 OR name = 'テスト';
-- ⑧
SELECT * FROM table1
WHERE id = 100 AND name = 'テスト';
-- ⑨
SELECT * FROM table1
WHERE name IS NULL;
演習問題
• 演習問題(table1)
20
-- ⑩
SELECT * FROM table1
WHERE trim(name) = 'test';
-- ⑪
SELECT * FROM table1
WHERE substr(name, 1, 2) = 'te';
-- ⑫
SELECT * FROM table1
WHERE name IN ('aaa', 'bbb', 'test');
演習問題
21
table2のテーブル定義
table2 インデックス
物理名 型 primary key 1 column1 column2 column3
column1 varchar(50) 〇
column2 varchar(50) 〇
column3 varchar(50) 〇
レコードの情報
レコード件数:10000件
データ分布
column1:aa1~aa10000(10000通り)
column2:bb1~bb10000(10000通り)
column3:cc1~cc10000(10000通り)
演習問題
• 演習問題(table2)
• マルチカラムインデックスの場合
22
-- ①
SELECT * FROM table2
WHERE column1 = 'aa1';
-- ②
SELECT * FROM table2
WHERE column2 = 'bb1';
-- ③
SELECT * FROM table2
WHERE column1 = 'aa1' OR column2 = 'bb1';
演習問題
• 演習問題(table2)
23
-- ④
SELECT * FROM table2
WHERE column1 = 'aa1' AND column2 = 'bb1';
-- ⑤
SELECT * FROM table2
WHERE column2 = 'bb1' AND column1 = 'aa1';
演習問題
• 演習問題(table2)
24
-- ⑥
SELECT * FROM table2
WHERE column1 = 'aa1' AND trim(column2) = 'bb1';
-- ⑦
SELECT * FROM table2
WHERE column2 = 'bb1' AND trim(column1) = 'aa1';
インデックスまとめ
• インデックスが使用されない条件指定まとめ
• 否定(<>)を使用している
WHERE column1 <> '100'
• 広い範囲での条件指定(ヒットする件数が多い場合)
WHERE column1 BETWEEN '1' AND '99999999'
• OR を使用している
WHERE column1 = '100' OR column2 = 'abc'
• あいまい検索(後方一致)を使用している
WHERE column1 LIKE '%abc%'
• 絞り込み対象のカラムに対して関数を適用している
WHERE TRIM(column1) = 'abc'
25
インデックスまとめ
• インデックスが使用される可能性の高い条件指定まとめ
• =を使用する
WHERE column1 = '100'
• 狭い範囲での条件指定
WHERE column1 BETWEEN '1' AND '100'
• 前方一致のあいまい検索
WHERE column1 LIKE 'abc%'
26
インデックスまとめ
• インデックスがキーに対して昇順で並んでいることを理解し、
インデックスが使用されるSQLになっているかを意識しましょ
う。
27
インデックスまとめ
• インデックスの設計
• インデックスを設計する際は、使用するSQL文に対してインデックス
が使用されるかどうかを考慮して設計を行いましょう。
• インデックスが多くなると、SELECT文の速度は上がりますが、更新の
負荷が増す、インデックス分の容量が必要になるなどのデメリットも
あります。
• インデックスが多くなることのメリット、デメリットを把握し、どの
ようなインデックスが必要かを考えるようにしましょう。
28
参考資料
演習問題のSQLに対する実行計画
※環境によっては全く同じ状況にならない場合もあります
29
演習問題の実行計画
• table1 - ①
• 「Index Scan」なのでインデックスが使用される。
30
演習問題の実行計画
• table1 - ②
• 「Seq Scan」なのでインデックスは使用されていない。
31
演習問題の実行計画
• table1 - ③
• 絞り込みの件数によって使用されるか使用されないかが異なる。
• テストデータが1万件の場合、5000件まではインデックスが使用され
る結果となった。
32
演習問題の実行計画
• table1 - ④
• 「Index Scan」なのでインデックスが使用される。
33
演習問題の実行計画
• table1 - ⑤
• 「Seq Scan」なのでインデックスは使用されない。
34
演習問題の実行計画
• table1 - ⑥
• 「Seq Scan」なのでインデックスは使用されない。
※Oracleの場合は、同じ状況でインデックスが使用されました。
DBMSによって異なるが、前方一致の場合は使用される可能性が高い。
35
演習問題の実行計画
• table1 - ⑦
• 「Seq Scan」なのでインデックスは使用されない。
36
演習問題の実行計画
• table1 - ⑧
• 「Index Scan」なのでインデックスは使用される。
37
演習問題の実行計画
• table1 - ⑨
• 「Seq Scan」なのでインデックスは使用されない。
※nullのレコードの件数によって異なる結果となるが、基本的にnullは
インデックスは使用されないと考えておいた方が良いです。
38
演習問題の実行計画
• table1 - ⑩
• 「Seq Scan」なのでインデックスは使用されない。
39
演習問題の実行計画
• table1 - ⑪
• 「Seq Scan」なのでインデックスは使用されない。
40
演習問題の実行計画
• table1 - ⑫
• 「Index Scan」なのでインデックスは使用される。
41
演習問題の実行計画
• table2 - ①
• 「Index Only Scan」なのでインデックスは使用される。
• 全てのカラムがインデックスに含まれているため、「Index Scan」では
なく「Index Only Scan」になる。
42
演習問題の実行計画
• table2 - ②
• 「Seq Scan」なのでインデックスは使用されない。
43
演習問題の実行計画
• table2 - ③
• 「Seq Scan」なのでインデックスは使用されない。
44
演習問題の実行計画
• table2 - ④
• 「Index Only Scan」なのでインデックスは使用される。
45
演習問題の実行計画
• table2 - ⑤
• 「Index Only Scan」なのでインデックスは使用される。
46
演習問題の実行計画
• table2 - ⑥
• 「Index Only Scan」なのでインデックスは使用される。
47
演習問題の実行計画
• table2 - ⑦
• 「Seq Scan」なのでインデックスは使用されない。
48

More Related Content

Similar to 2018年度 若手技術者向け講座 インデックス

2019年度 若手技術者向け講座 実行計画
2019年度 若手技術者向け講座 実行計画2019年度 若手技術者向け講座 実行計画
2019年度 若手技術者向け講座 実行計画
keki3
 
2019年度若手技術者向け講座 実践SQL
2019年度若手技術者向け講座 実践SQL2019年度若手技術者向け講座 実践SQL
2019年度若手技術者向け講座 実践SQL
keki3
 
1.2新機能と1.2から始めるcql3
1.2新機能と1.2から始めるcql31.2新機能と1.2から始めるcql3
1.2新機能と1.2から始めるcql3
seki_intheforest
 
ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開
Yahoo!デベロッパーネットワーク
 
2019年度若手技術者向け講座 インデックス
2019年度若手技術者向け講座 インデックス2019年度若手技術者向け講座 インデックス
2019年度若手技術者向け講座 インデックス
keki3
 
2018年度 若手技術者向け講座 実行計画
2018年度 若手技術者向け講座 実行計画2018年度 若手技術者向け講座 実行計画
2018年度 若手技術者向け講座 実行計画
keki3
 
データベースシステム論11 - データベースの構成
データベースシステム論11 - データベースの構成データベースシステム論11 - データベースの構成
データベースシステム論11 - データベースの構成
Shohei Yokoyama
 
PostgreSQL運用管理入門
PostgreSQL運用管理入門PostgreSQL運用管理入門
PostgreSQL運用管理入門
Yoshiyuki Asaba
 
1台から500台までのMySQL運用(YAPC::Asia編)
1台から500台までのMySQL運用(YAPC::Asia編)1台から500台までのMySQL運用(YAPC::Asia編)
1台から500台までのMySQL運用(YAPC::Asia編)Masahiro Nagano
 
MySQL のオンラインバックアップ & リカバリ
MySQL のオンラインバックアップ & リカバリMySQL のオンラインバックアップ & リカバリ
MySQL のオンラインバックアップ & リカバリ
k_teru
 
20090107 Postgre Sqlチューニング(Sql編)
20090107 Postgre Sqlチューニング(Sql編)20090107 Postgre Sqlチューニング(Sql編)
20090107 Postgre Sqlチューニング(Sql編)Hiromu Shioya
 
MySQL SQL tuning
MySQL SQL tuningMySQL SQL tuning
MySQL SQL tuning
Tetsuro Nagae
 
generate_series関数使い込み
generate_series関数使い込みgenerate_series関数使い込み
generate_series関数使い込み
kawarasho
 
とあるDBAの黒い画面(ターミナル)
とあるDBAの黒い画面(ターミナル)とあるDBAの黒い画面(ターミナル)
とあるDBAの黒い画面(ターミナル)
Kazuhiro Yoshikawa
 
プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造Takuya Akiba
 
データベースのお話
データベースのお話データベースのお話
データベースのお話
Hidekazu Tanaka
 

Similar to 2018年度 若手技術者向け講座 インデックス (16)

2019年度 若手技術者向け講座 実行計画
2019年度 若手技術者向け講座 実行計画2019年度 若手技術者向け講座 実行計画
2019年度 若手技術者向け講座 実行計画
 
2019年度若手技術者向け講座 実践SQL
2019年度若手技術者向け講座 実践SQL2019年度若手技術者向け講座 実践SQL
2019年度若手技術者向け講座 実践SQL
 
1.2新機能と1.2から始めるcql3
1.2新機能と1.2から始めるcql31.2新機能と1.2から始めるcql3
1.2新機能と1.2から始めるcql3
 
ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開
 
2019年度若手技術者向け講座 インデックス
2019年度若手技術者向け講座 インデックス2019年度若手技術者向け講座 インデックス
2019年度若手技術者向け講座 インデックス
 
2018年度 若手技術者向け講座 実行計画
2018年度 若手技術者向け講座 実行計画2018年度 若手技術者向け講座 実行計画
2018年度 若手技術者向け講座 実行計画
 
データベースシステム論11 - データベースの構成
データベースシステム論11 - データベースの構成データベースシステム論11 - データベースの構成
データベースシステム論11 - データベースの構成
 
PostgreSQL運用管理入門
PostgreSQL運用管理入門PostgreSQL運用管理入門
PostgreSQL運用管理入門
 
1台から500台までのMySQL運用(YAPC::Asia編)
1台から500台までのMySQL運用(YAPC::Asia編)1台から500台までのMySQL運用(YAPC::Asia編)
1台から500台までのMySQL運用(YAPC::Asia編)
 
MySQL のオンラインバックアップ & リカバリ
MySQL のオンラインバックアップ & リカバリMySQL のオンラインバックアップ & リカバリ
MySQL のオンラインバックアップ & リカバリ
 
20090107 Postgre Sqlチューニング(Sql編)
20090107 Postgre Sqlチューニング(Sql編)20090107 Postgre Sqlチューニング(Sql編)
20090107 Postgre Sqlチューニング(Sql編)
 
MySQL SQL tuning
MySQL SQL tuningMySQL SQL tuning
MySQL SQL tuning
 
generate_series関数使い込み
generate_series関数使い込みgenerate_series関数使い込み
generate_series関数使い込み
 
とあるDBAの黒い画面(ターミナル)
とあるDBAの黒い画面(ターミナル)とあるDBAの黒い画面(ターミナル)
とあるDBAの黒い画面(ターミナル)
 
プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造
 
データベースのお話
データベースのお話データベースのお話
データベースのお話
 

More from keki3

Computer terminology
Computer terminologyComputer terminology
Computer terminology
keki3
 
Introduction to programming
Introduction to programmingIntroduction to programming
Introduction to programming
keki3
 
2019年度 若手技術者向け講座 デザインパターン 演習問題
2019年度 若手技術者向け講座 デザインパターン 演習問題2019年度 若手技術者向け講座 デザインパターン 演習問題
2019年度 若手技術者向け講座 デザインパターン 演習問題
keki3
 
2019年度 若手技術者向け講座 デザインパターン
2019年度 若手技術者向け講座 デザインパターン2019年度 若手技術者向け講座 デザインパターン
2019年度 若手技術者向け講座 デザインパターン
keki3
 
2019年度 若手技術者向け講座 リファクタリング
2019年度 若手技術者向け講座 リファクタリング2019年度 若手技術者向け講座 リファクタリング
2019年度 若手技術者向け講座 リファクタリング
keki3
 
2019年度 若手技術者向け講座 UML
2019年度 若手技術者向け講座 UML2019年度 若手技術者向け講座 UML
2019年度 若手技術者向け講座 UML
keki3
 
2019年度 若手技術者向け講座 オブジェクト指向
2019年度 若手技術者向け講座 オブジェクト指向2019年度 若手技術者向け講座 オブジェクト指向
2019年度 若手技術者向け講座 オブジェクト指向
keki3
 
Wakatemukekouza2019 web
Wakatemukekouza2019 webWakatemukekouza2019 web
Wakatemukekouza2019 web
keki3
 
2019 若手技術者向け講座 DB設計
2019 若手技術者向け講座 DB設計2019 若手技術者向け講座 DB設計
2019 若手技術者向け講座 DB設計
keki3
 
2019年度 若手技術者向け講座 NoSQL
2019年度 若手技術者向け講座 NoSQL2019年度 若手技術者向け講座 NoSQL
2019年度 若手技術者向け講座 NoSQL
keki3
 
2019 若手技術者向け講座 DBMSの機能 演習問題
2019 若手技術者向け講座 DBMSの機能 演習問題2019 若手技術者向け講座 DBMSの機能 演習問題
2019 若手技術者向け講座 DBMSの機能 演習問題
keki3
 
2019年度 若手技術者向け講座 DBMSの機能
2019年度 若手技術者向け講座 DBMSの機能2019年度 若手技術者向け講座 DBMSの機能
2019年度 若手技術者向け講座 DBMSの機能
keki3
 
2019年度 若手技術者向け講座 SQL演習
2019年度 若手技術者向け講座 SQL演習2019年度 若手技術者向け講座 SQL演習
2019年度 若手技術者向け講座 SQL演習
keki3
 
2018年度 若手技術者向け講座 デザインパターン
2018年度 若手技術者向け講座 デザインパターン2018年度 若手技術者向け講座 デザインパターン
2018年度 若手技術者向け講座 デザインパターン
keki3
 
2018年度 若手技術者向け講座 UML
2018年度 若手技術者向け講座 UML2018年度 若手技術者向け講座 UML
2018年度 若手技術者向け講座 UML
keki3
 
2018年度 若手技術者向け講座 オブジェクト指向01
2018年度 若手技術者向け講座 オブジェクト指向012018年度 若手技術者向け講座 オブジェクト指向01
2018年度 若手技術者向け講座 オブジェクト指向01
keki3
 
2018年度 若手技術者向け講座 リファクタリング
2018年度 若手技術者向け講座 リファクタリング2018年度 若手技術者向け講座 リファクタリング
2018年度 若手技術者向け講座 リファクタリング
keki3
 
2018年度 若手技術者向け講座 DB設計・正規化
2018年度 若手技術者向け講座 DB設計・正規化2018年度 若手技術者向け講座 DB設計・正規化
2018年度 若手技術者向け講座 DB設計・正規化
keki3
 
2018年度 若手技術者向け講座 大量データの扱い・ストアド・メモリ管理
2018年度 若手技術者向け講座 大量データの扱い・ストアド・メモリ管理2018年度 若手技術者向け講座 大量データの扱い・ストアド・メモリ管理
2018年度 若手技術者向け講座 大量データの扱い・ストアド・メモリ管理
keki3
 
2018年度 若手技術者向け講座 SQL概要
2018年度 若手技術者向け講座 SQL概要2018年度 若手技術者向け講座 SQL概要
2018年度 若手技術者向け講座 SQL概要
keki3
 

More from keki3 (20)

Computer terminology
Computer terminologyComputer terminology
Computer terminology
 
Introduction to programming
Introduction to programmingIntroduction to programming
Introduction to programming
 
2019年度 若手技術者向け講座 デザインパターン 演習問題
2019年度 若手技術者向け講座 デザインパターン 演習問題2019年度 若手技術者向け講座 デザインパターン 演習問題
2019年度 若手技術者向け講座 デザインパターン 演習問題
 
2019年度 若手技術者向け講座 デザインパターン
2019年度 若手技術者向け講座 デザインパターン2019年度 若手技術者向け講座 デザインパターン
2019年度 若手技術者向け講座 デザインパターン
 
2019年度 若手技術者向け講座 リファクタリング
2019年度 若手技術者向け講座 リファクタリング2019年度 若手技術者向け講座 リファクタリング
2019年度 若手技術者向け講座 リファクタリング
 
2019年度 若手技術者向け講座 UML
2019年度 若手技術者向け講座 UML2019年度 若手技術者向け講座 UML
2019年度 若手技術者向け講座 UML
 
2019年度 若手技術者向け講座 オブジェクト指向
2019年度 若手技術者向け講座 オブジェクト指向2019年度 若手技術者向け講座 オブジェクト指向
2019年度 若手技術者向け講座 オブジェクト指向
 
Wakatemukekouza2019 web
Wakatemukekouza2019 webWakatemukekouza2019 web
Wakatemukekouza2019 web
 
2019 若手技術者向け講座 DB設計
2019 若手技術者向け講座 DB設計2019 若手技術者向け講座 DB設計
2019 若手技術者向け講座 DB設計
 
2019年度 若手技術者向け講座 NoSQL
2019年度 若手技術者向け講座 NoSQL2019年度 若手技術者向け講座 NoSQL
2019年度 若手技術者向け講座 NoSQL
 
2019 若手技術者向け講座 DBMSの機能 演習問題
2019 若手技術者向け講座 DBMSの機能 演習問題2019 若手技術者向け講座 DBMSの機能 演習問題
2019 若手技術者向け講座 DBMSの機能 演習問題
 
2019年度 若手技術者向け講座 DBMSの機能
2019年度 若手技術者向け講座 DBMSの機能2019年度 若手技術者向け講座 DBMSの機能
2019年度 若手技術者向け講座 DBMSの機能
 
2019年度 若手技術者向け講座 SQL演習
2019年度 若手技術者向け講座 SQL演習2019年度 若手技術者向け講座 SQL演習
2019年度 若手技術者向け講座 SQL演習
 
2018年度 若手技術者向け講座 デザインパターン
2018年度 若手技術者向け講座 デザインパターン2018年度 若手技術者向け講座 デザインパターン
2018年度 若手技術者向け講座 デザインパターン
 
2018年度 若手技術者向け講座 UML
2018年度 若手技術者向け講座 UML2018年度 若手技術者向け講座 UML
2018年度 若手技術者向け講座 UML
 
2018年度 若手技術者向け講座 オブジェクト指向01
2018年度 若手技術者向け講座 オブジェクト指向012018年度 若手技術者向け講座 オブジェクト指向01
2018年度 若手技術者向け講座 オブジェクト指向01
 
2018年度 若手技術者向け講座 リファクタリング
2018年度 若手技術者向け講座 リファクタリング2018年度 若手技術者向け講座 リファクタリング
2018年度 若手技術者向け講座 リファクタリング
 
2018年度 若手技術者向け講座 DB設計・正規化
2018年度 若手技術者向け講座 DB設計・正規化2018年度 若手技術者向け講座 DB設計・正規化
2018年度 若手技術者向け講座 DB設計・正規化
 
2018年度 若手技術者向け講座 大量データの扱い・ストアド・メモリ管理
2018年度 若手技術者向け講座 大量データの扱い・ストアド・メモリ管理2018年度 若手技術者向け講座 大量データの扱い・ストアド・メモリ管理
2018年度 若手技術者向け講座 大量データの扱い・ストアド・メモリ管理
 
2018年度 若手技術者向け講座 SQL概要
2018年度 若手技術者向け講座 SQL概要2018年度 若手技術者向け講座 SQL概要
2018年度 若手技術者向け講座 SQL概要
 

2018年度 若手技術者向け講座 インデックス