SQLとはバッチ処理である

f:id:ryoutaku_jo:20190322170732p:plain

【結論】

バッチ処理とは、あらかじめ設定した処理を
 一度に実行する事

SQLでは、一行だけの簡単なコードでも、
 複数の内部処理を経て、データにアクセスしている

・例えば、INSERT文による
 レコードを追加するだけに見える処理でも
 主キーが重複していないか?といった
 チェックの処理が同時に走っている

【目次】

【本題】

データモデリングに関する学び

就職先が決まったので、
実務に向けての勉強を始める事にしました。

そこで、就職先のCTOの方に、
実務に就くまでに勉強しておいた方が良い事を伺ったところ、
「データモデリングに関する知見があると有り難い」と言われ、
下記の本を紹介して頂きました。

「著書:楽々ERDレッスン(著者:羽生 章洋)」

リレーショナルデータベースの設計概念を解説した本ですが、
その中で気になるキーワードが出て来ました。

それは「SQLとはバッチ処理である」という言葉です。
そして、効率的なSQLを組み上で、
この概念が非常に重要になると紹介されていました。

今回は、この言葉の意味についてまとめてみました。

バッチ処理とは

そもそも、バッチ処理とは何か?ですが、
「あらかじめ設定した処理を一度に実行する事」を指します。

なので「SQLとはバッチ処理である」というのは、
SQLでは、複数の処理を一度に実行して
データにアクセスしているという意味になります。

SQLの内部処理

では実際にどの様な処理が行われているか見て行きます。
例として、下記のSQL文の処理を確認します。

|sql| SELECT * FROM users ||<

これはコードだけを見ると、下記の様な処理の流れになります
1:「FROM users 」で「users」テーブルを指定
2:「SELECT *」で「users」テーブルの全データを取得

しかし、実際には、上記の処理の前に
下記の様な内部処理も一緒に実行されています
1:SQL文の解析
2:SQL文の書き換え
3:実行計画を生成

SQL文の解析

実行されたSQLの文法に誤りが無いか確認します。
また、指定されたテーブルやフィールドが
実際に存在するのかもチェックします。

SQL文の書き換え

上記の解析が正常に完了すれば、
次はSQL文をより早くに実行完了できる様に書き換えます。

実行計画の生成

検索条件によっては、データへアクセスするルートは
何通りも存在します。

その中で、最も効率的にアクセスできるルートを
インデックスの貼り方などを考慮した上で
実行計画に落とし込みます。

ここで生成された実行計画を元に、SQLが実行されます。

《今日の学習進捗(3年以内に10000時間に向けて)》

学習開始からの期間 :105日
今日までの合計時間:984h
一日あたりの平均学習時間:9.4h
今日までに到達すべき目標時間:959h
目標との解離:25h
「10,000時間」まで、

残り・・・「9016時間!」