Upgrade to Pro — share decks privately, control downloads, hide ads and more …

データベースの気持ちになろう (ハンズオン)

データベースの気持ちになろう (ハンズオン)

More Decks by NearMeの技術発表資料です

Other Decks in Programming

Transcript

  1. 2 下準備 • JupyterLabの起動 • Docker Engineのインストール • MySQLコンテナの起動 •

    MySQLへの接続 ◦ テーブルの作成 ◦ レコードの挿入 ◦ レコードの選択
  2. 4 4 インデックスがどう効くか確認 • 100000件のレコード挿入 • インデックスを貼ってないフィールドによって1レコードを取得した時の実行時間を確認 • 200000件、300000件の場合、実行時間はどう増えるか? •

    ID(プライマリキー)によって1レコードを取得した時はどうなるか? • インデックスを貼ると検索時間はどう変わるか? id name 1 一郎 2 二郎 3 三郎 プライマリキー B+ツリー クラスタインデックス (リーフ=”レコード”) セカンダリインデックス (リーフ=プライマリキーの値) リーフ
  3. 5 5 マルチカラムインデックスの挙動を確認 • 複数のフィールドによって1つのレコードを取得 • 片方のフィールドだけインデックスを貼って実行時間を確認 • マルチカラムインデックスを貼って実行時間を確認 •

    片方のフィールドで絞り込んでオフセットを指定してレコードを取得した場合の実行時間を確認 id last_name first_name 1 一山 一郎 2 一山 二郎 3 二山 一郎
  4. 7 7 テーブル結合時のインデックスの挙動を確認 • 基本的なテーブル結合の説明(INNER JOIN、LEFT JOIN) • 結合時にインデックスが効いている場合 •

    結合時にインデックスが効いてない場合 出典:https://www.codeproject.com/articles/33052/visual-representation-of-sql-joins