回答編集履歴
2
加筆修正
test
CHANGED
@@ -9,3 +9,23 @@
|
|
9
9
|
インデックス活用すれば最大値くらいはサクッと求まるとは思うけれども。
|
10
10
|
|
11
11
|
最大値(として使う数字)をRDBMS側に自動管理させてラクに使えばパフォーマンスも良いと思った。
|
12
|
+
|
13
|
+
|
14
|
+
|
15
|
+
ちなみに、複数の人が同じタイミングで同じような動作をした場合に、
|
16
|
+
|
17
|
+
その時点の数字の最大値をテーブルから取得したとして、
|
18
|
+
|
19
|
+
+1した値の書き込みがほぼ同時発生したりするわけです。
|
20
|
+
|
21
|
+
何十人何百人でタイミングを見計らえば十分起こりうる話です。
|
22
|
+
|
23
|
+
そのため、最大値を求めて+1している間にも、
|
24
|
+
|
25
|
+
既に最大値は増え続けている可能性があるので、
|
26
|
+
|
27
|
+
安全なデータ保存を行うためには
|
28
|
+
|
29
|
+
せっかくのRDBMSを使うわけですからシーケンスという仕組みを使ったほうが無難です。
|
30
|
+
|
31
|
+
|
1
加筆修正
test
CHANGED
@@ -1,9 +1,11 @@
|
|
1
|
-
シーケンス
|
1
|
+
大概のRDBMSではシーケンスという重複しない数字を発行する仕組みがあるので、
|
2
2
|
|
3
|
+
シーケンスで重複しない数字(を最大値とみなして)を自動発行させて使えば、
|
4
|
+
|
3
|
-
いちいち既存の数字の最大値とか調べなくて済むのではなかろうか。
|
5
|
+
いちいち既存の数字の最大値とか重複とか調べなくて済むのではなかろうか。
|
4
6
|
|
5
7
|
|
6
8
|
|
7
9
|
インデックス活用すれば最大値くらいはサクッと求まるとは思うけれども。
|
8
10
|
|
9
|
-
最大値をRDBMS側に自動管理させてラクに使えばパフォーマンスも良いと思った。
|
11
|
+
最大値(として使う数字)をRDBMS側に自動管理させてラクに使えばパフォーマンスも良いと思った。
|