Submit Search
メッチャ役に立つauto_incrementの話
3 likes
7,386 views
株式会社シャーロック
2012/06/27 MySQL Casual Talks @gumi福岡 #mysqlcf
Read more
1 of 32
Download now
Downloaded 10 times
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
More Related Content
PDF
簡易版AutoML+OptunaによるHyperparams Tuning
Masaharu Kinoshita
PPTX
2021 days opening
Kameda Harunobu
PPTX
FreeCAD OpenFOAM Workbenchセットアップ方法と課題
murai1972
PDF
Boost.Logとfluentdで始めるログ活用術
Toshiki Teramura
PDF
HELYX-OS in DEXCS2016 for OpenFOAM
hideaki Kominami
PDF
OpenMDAOの最適化を試す(第23回オープンCAE勉強会@関西)
TatsuyaKatayama
PDF
Free cad 0.19.2 and cfdof (Japanese Ver.)
YohichiShiina
PDF
SQLアンチパターン - ジェイウォーク
ke-m kamekoopa
簡易版AutoML+OptunaによるHyperparams Tuning
Masaharu Kinoshita
2021 days opening
Kameda Harunobu
FreeCAD OpenFOAM Workbenchセットアップ方法と課題
murai1972
Boost.Logとfluentdで始めるログ活用術
Toshiki Teramura
HELYX-OS in DEXCS2016 for OpenFOAM
hideaki Kominami
OpenMDAOの最適化を試す(第23回オープンCAE勉強会@関西)
TatsuyaKatayama
Free cad 0.19.2 and cfdof (Japanese Ver.)
YohichiShiina
SQLアンチパターン - ジェイウォーク
ke-m kamekoopa
What's hot
(20)
PDF
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
MITSUNARI Shigeo
PDF
ベータ分布の謎に迫る
Ken'ichi Matsui
ODP
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
pospome
PPTX
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
NTT DATA Technology & Innovation
PPTX
パケット キャプチャで学ぶSMB (CIFS) の基本
彰 村地
PDF
MySQL SYSスキーマのご紹介
Shinya Sugiyama
PDF
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu
PPTX
入社100日の新人がクラスメソッドでの激速の日々を赤裸々に語る
Classmethod,Inc.
PPTX
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
PDF
FPGA, AI, エッジコンピューティング
Hideo Terada
PPTX
FSI analysis with preCICE (OpenFOAM and CalculiX)
守淑 田村
PDF
次世代量子情報技術 量子アニーリングが拓く新時代 -- 情報処理と物理学のハーモニー --
Shu Tanaka
PDF
GoとDDDでモバイルオーダープラットフォームを 型安全に作り直した話
Takuya Kikuchi
PPTX
組合せ最適化問題と解法アルゴリズム
sady_nitro
PDF
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
NTT DATA Technology & Innovation
PDF
ROS2勉強会 4章前半
tomohiro kuwano
PPTX
RLSを用いたマルチテナント実装 for Django
Takayuki Shimizukawa
PPTX
初心者向け負荷軽減のはなし
Oonishi Takaaki
PDF
What’s new in cloud run 2021 後期
Google Cloud Platform - Japan
PDF
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
mlm_kansai
Intel AVX-512/富岳SVE用SIMDコード生成ライブラリsimdgen
MITSUNARI Shigeo
ベータ分布の謎に迫る
Ken'ichi Matsui
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
pospome
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
NTT DATA Technology & Innovation
パケット キャプチャで学ぶSMB (CIFS) の基本
彰 村地
MySQL SYSスキーマのご紹介
Shinya Sugiyama
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu
入社100日の新人がクラスメソッドでの激速の日々を赤裸々に語る
Classmethod,Inc.
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
FPGA, AI, エッジコンピューティング
Hideo Terada
FSI analysis with preCICE (OpenFOAM and CalculiX)
守淑 田村
次世代量子情報技術 量子アニーリングが拓く新時代 -- 情報処理と物理学のハーモニー --
Shu Tanaka
GoとDDDでモバイルオーダープラットフォームを 型安全に作り直した話
Takuya Kikuchi
組合せ最適化問題と解法アルゴリズム
sady_nitro
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
NTT DATA Technology & Innovation
ROS2勉強会 4章前半
tomohiro kuwano
RLSを用いたマルチテナント実装 for Django
Takayuki Shimizukawa
初心者向け負荷軽減のはなし
Oonishi Takaaki
What’s new in cloud run 2021 後期
Google Cloud Platform - Japan
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
mlm_kansai
Ad
Viewers also liked
(20)
PPTX
私がMySQLを始めた理由
yoyamasaki
KEY
カジュアルにバックアップ - MySQL Casual Talks 福岡
Aya Komuro
KEY
My sql casual_in_fukuoka_vol1
Makoto Haruyama
KEY
Mysql casial01
matsuo kenji
PDF
MySQL de NoSQL Fukuoka
Ryusuke Kajiyama
PPTX
MySQL for Excelの紹介
yoyamasaki
PDF
カジュアルにギャップキーロックとネクストキーロック
株式会社シャーロック
PDF
MySQL Casual Talks in Fukuoka vol.2
学 松崎
KEY
Mysql casual fukuoa_vlo_2
Makoto Haruyama
PDF
なかったらINSERTしたいし、あるならロック取りたいやん?
ichirin2501
PDF
Blazing Performance with Flame Graphs
Brendan Gregg
PPTX
DevOps Practices:Configuration as Code
Doug Seven
PDF
Configuration As Code - Adoption of the Job DSL Plugin at Netflix
Justin Ryan
PPTX
深い親子関係のテーブル設計
琢磨 三浦
PDF
DB技術[実践]入門を読んだ
Yuuki Tan-nai
PDF
MySQL カジュアル 福岡 03
Aya Komuro
PPTX
Chef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsug
Takeshi Komiya
PPTX
ドキュメントの話、しませんか? #428rk01
Takeshi Komiya
PDF
外部キー制約に伴うロックの小話
ichirin2501
PDF
PayPal Big Data and MySQL Cluster
Mat Keep
私がMySQLを始めた理由
yoyamasaki
カジュアルにバックアップ - MySQL Casual Talks 福岡
Aya Komuro
My sql casual_in_fukuoka_vol1
Makoto Haruyama
Mysql casial01
matsuo kenji
MySQL de NoSQL Fukuoka
Ryusuke Kajiyama
MySQL for Excelの紹介
yoyamasaki
カジュアルにギャップキーロックとネクストキーロック
株式会社シャーロック
MySQL Casual Talks in Fukuoka vol.2
学 松崎
Mysql casual fukuoa_vlo_2
Makoto Haruyama
なかったらINSERTしたいし、あるならロック取りたいやん?
ichirin2501
Blazing Performance with Flame Graphs
Brendan Gregg
DevOps Practices:Configuration as Code
Doug Seven
Configuration As Code - Adoption of the Job DSL Plugin at Netflix
Justin Ryan
深い親子関係のテーブル設計
琢磨 三浦
DB技術[実践]入門を読んだ
Yuuki Tan-nai
MySQL カジュアル 福岡 03
Aya Komuro
Chef の気まぐれ環境構築 〜季節の Capistrano を添えて〜 #jawsug
Takeshi Komiya
ドキュメントの話、しませんか? #428rk01
Takeshi Komiya
外部キー制約に伴うロックの小話
ichirin2501
PayPal Big Data and MySQL Cluster
Mat Keep
Ad
Similar to メッチャ役に立つauto_incrementの話
(9)
PDF
http2 最速実装 v2
Yoshihiro Iwanaga
PDF
DB tech showcase_tokyo2018_LOCONDO
Shinya Sugiyama
PDF
MySQL 入門的なはなし
Yuya Takeyama
PDF
MySQL勉強会 クエリチューニング編
MicroAd, Inc.(Engineer)
PDF
ふくよかなモデル
yukaina
PDF
5 古雷my sql源碼與資料庫規範
Ivan Tu
PDF
削除フラグのはなし
Shigetaka Yachi
PDF
MySQLとPostgreSQLにおける基本的なアカウント管理
Shinya Sugiyama
PDF
Locondo 20190215@ec tech_group
Shinya Sugiyama
http2 最速実装 v2
Yoshihiro Iwanaga
DB tech showcase_tokyo2018_LOCONDO
Shinya Sugiyama
MySQL 入門的なはなし
Yuya Takeyama
MySQL勉強会 クエリチューニング編
MicroAd, Inc.(Engineer)
ふくよかなモデル
yukaina
5 古雷my sql源碼與資料庫規範
Ivan Tu
削除フラグのはなし
Shigetaka Yachi
MySQLとPostgreSQLにおける基本的なアカウント管理
Shinya Sugiyama
Locondo 20190215@ec tech_group
Shinya Sugiyama
メッチャ役に立つauto_incrementの話
1.
メッチャ役に立つ auto_incrementの話
@kitakoh 2012
2.
自己紹介 @kitakoh(放置中…) 大分から来ました パン食べるパン よろしくお願いします!
3.
auto_increment 通し番号を自動で振ってくれる機能
4.
user_id(auto_increment), user_name(char 10) だけのテーブルで実験
5.
普通にINSERT INSERT INTO tbl
(user_name) VALUES (‘user01’), (‘user02’), (‘user03’);
6.
普通にINSERT +---------+-----------+ |
user_id | user_name | +---------+-----------+ | 1 | user01 | | 2 | user02 | | 3 | user03 | +---------+-----------+ 3 rows in set (0.00 sec)
7.
user_id=2をDELETE
+---------+-----------+ | user_id | user_name | +---------+-----------+ | 1 | user01 | | ! 2 | user02 | | 3 | user03 | +---------+-----------+ 3 rows in set (0.00 sec)
8.
この状態で新規行をINSERT
+---------+-----------+ | user_id | user_name | +---------+-----------+ | 1 | user01 | | 3 | user03 | +---------+-----------+ 2 rows in set (0.00 sec)
9.
最後に追加された +---------+-----------+ |
user_id | user_name | +---------+-----------+ | 1 | user01 | | 3 | user03 | | ! 4 | userXX | +---------+-----------+ 3 rows in set (0.00 sec)
10.
最後の行をDELETEしてINSERTすると?
+---------+-----------+ | user_id | user_name | +---------+-----------+ | 1 | user01 | | 3 | user03 | | ! 4 | userXX | +---------+-----------+ 3 rows in set (0.00 sec)
11.
最後に追加された +---------+-----------+ |
user_id | user_name | +---------+-----------+ | 1 | user01 | | 3 | user03 | | ! 5 | userYY | +---------+-----------+ 3 rows in set (0.00 sec)
12.
auto_incrementで振られ るシーケンスは再利用され
ない
13.
user_idを指定してみる INSERT INTO tbl
(user_id, user_name) VALUES (10, ‘user10’);
14.
ここに新規行をINSERT +---------+-----------+
| user_id | user_name | +---------+-----------+ | 1 | user01 | | 3 | user03 | | 4 | userXX | | 5 | userYY | | 10 | user10 | +---------+-----------+
15.
最後に追加された +---------+-----------+ | user_id |
user_name | +---------+-----------+ | 1 | user01 | | 3 | user03 | | 4 | userXX | | 5 | userYY | | 10 | user10 | | ! 11 | userZZ | +---------+-----------+
16.
歯抜けのuser_idを指定 INSERT INTO tbl
(user_id, user_name) VALUES (2, ‘user2’);
17.
指定場所に追加される +---------+-----------+ |
user_id | user_name | +---------+-----------+ | 1 | user01 | | ! 2 | user02 | | 3 | user03 | | 4 | userXX | | 5 | userYY | | 10 | user10 | | 11 | userZZ |
18.
シーケンスは基本的に再利 用されないが、値を指定す れば再利用可能
19.
全行DELETEするとどうなる? (シーケンス11まで振られている状態で) DELETE FROM tbl; INSERT
INTO tbl(user_name) VALUES(‘userXX’);
20.
最後に追加される +---------+-----------+ |
user_id | user_name | +---------+-----------+ | 12 | userXX | +---------+-----------+ 1 rows in set (0.00 sec)
21.
テーブルをTRUNCATEするとどうなる? (シーケンスが12まで振られてる状態で) TRUNCATE TABLE tbl; INSERT
INTO tbl(user_name)VALUES(‘userXX’);
22.
シーケンスが巻き戻った +---------+-----------+
| user_id | user_name | +---------+-----------+ | 1 | userXX | +---------+-----------+ 1 rows in set (0.00 sec) ※MySQL5.5
23.
DELETEでは巻き戻らないが、 TRUNCATEだと巻き戻る
24.
user_idが最大値の状態でINSERT INSERT INTO tbl(user_id,
user_name) VALUES(127, ‘userXX’); +---------+-----------+ | user_id | user_name | +---------+-----------+ | 127 | userXX | +---------+-----------+ ↑TINYINT(SIGNED)
25.
ERRORになる ERROR 1062 (23000):
Duplicate entry '127' for key 'PRIMARY'
26.
シーケンス値は、ALTER文で指定できる ALTER TABLE tbl
auto_increment = 10; 10に指定しているので、新規行INSERTすると11から 入る
27.
今のシーケンス値を知る方法 SHOW
CREATE TABLE tbl; +-------+------------------------------------------------+ | Table | Create Table | +-------+------------------------------------------------+ | tbl | CREATE TABLE `tbl` ( | | | `user_id` tinyint(4) NOT NULL AUTO_INCREMENT, | | | `user_name` char(10) DEFAULT NULL, | | | PRIMARY KEY (`user_id`) | | | ) ENGINE=InnoDB AUTO_INCREMENT=10 | +-------+------------------------------------------------+
28.
複合キーでauto_increment CREATE TABLE tbl(
dept_id TINYINT, ←部門IDを追加 user_id TINYINT AUTO_INCREMENT, user_name CHAR(10), PRIMARY KEY(dept_id, user_id) )ENGINE=MyISAM;
29.
複合キーでauto_increment insert into tbl(dept_id,
user_name) values(1, 'aa'); insert into tbl(dept_id, user_name) values(1, 'bb'); insert into tbl(dept_id, user_name) values(1, 'cc'); insert into tbl(dept_id, user_name) values(2, 'aa'); insert into tbl(dept_id, user_name) values(2, 'bb'); insert into tbl(dept_id, user_name) values(2, 'cc'); 1と2の部門に3件ずつINSERTしてみる
30.
複合キーでauto_increment +---------+---------+-----------+ |
dept_id | user_id | user_name | +---------+---------+-----------+ | 1 | 1 | aa | | 1 | 2 | bb | | 1 | 3 | cc | | 2 | 1 | aa | | 2 | 2 | bb | | 2 | 3 | cc | +---------+---------+-----------+ 6 rows in set (0.01 sec)
31.
複合キーでauto_increment dept_idとuser_idで重 複しないように、自動的に
user_idを連番で振ってく れます。(MyISAM限定)
32.
メッチャ役に立つauto_incrementの話
完 ご清聴下さった皆様、 場所をご提供下さいましたgumi様、 ありがとうございました
Editor's Notes
#2:
\n
#3:
\n
#4:
\n
#5:
\n
#6:
\n
#7:
\n
#8:
\n
#9:
\n
#10:
\n
#11:
\n
#12:
\n
#13:
\n
#14:
\n
#15:
\n
#16:
\n
#17:
\n
#18:
\n
#19:
\n
#20:
\n
#21:
\n
#22:
\n
#23:
\n
#24:
\n
#25:
\n
#26:
\n
#27:
\n
#28:
\n
#29:
\n
#30:
\n
#31:
\n
#32:
\n
#33:
\n
Download