質問: 連番を振る インデックス 付加 理由 こんにちは、 mysqlの学習を始めた者です。(学習書籍:mysql 入門以前) レコードに連番を振る際に自動連番属性を持たせるためにはテーブルに対してインデックスを付加しないといけないと本に書いてありました。 例)alter table todofuken add index ind1(renban); 何となくは分かるのですが、すっきりしません。 何かこのあたりの事を分かりやすく教えていただけないでしょうか? よろしく御願いします。
回答: 連番を管理するにはどうすればいいかを考えてください。 (1)既存のデータ中の最大値を得る (2)(1)に+1する (3)重複も禁止する (1)を行うのにインデクスが無ければ、母体データを全件検索することになります。100万件のデータがあるなら、インデクスがないと100万件の全数検索を行わないと、最大値が何か分かりません。 インデクスを定義すれば、構造は一般的にb-tree構造であり、最大値を求める場合に母体データ数が増えても安定した性能を得られます。 重複がないことを保証するにも、インデクスが無ければ、全数検索してチェックする必要があります。