DBのID用に用いるAutoincrementがとても遅い?事を知った。
もし、間違いのご指摘はwelcomeです。
当然といえば当然ですよね、AutoIncrementするためには、既存の最後の番号、重複しない番号を算出しないといけないので、その手間がかかりますよね。
とはいえ、こんなに時間要するとは知りませんでした。
AutoIncrement使用のテーブル構造
id: Integer, AutoIncrement,PrimaryKey
id2: ShortInt, Unique=True
json: BOB
AutoIncrement非使用のテーブル構造
id2: ShortInt,PrimaryKey -- 上記のid列を除去してもid2だけでUnique.
json: BOB
Tableを生成し、約5000件の初期値レコードをコミットしたのにかかる時間は次の通りでした。
AutoIncrement未使用: 生成/初期化に要した時間:1.41sec
AutoIncrement使用: 生成/初期化に要した時間:44.18sec
【環境】
- クライアント: MacStudio(初期) +PycharmPro2023.1
- サーバ: MacMini2012(Ubuntu20) + MySQL8
- Python3.11+SqlAlchemy2.?
レコードの増減がなければLoad時刻はほぼ一緒でしたので考慮不要そうですが、レコードの増減が激しいTableは要検討した方がよさそう。
今まで教科書どおりにid列を設けてましたが、今後は配慮します。