• ベストアンサー

連番を振る インデックス 付加 理由

こんにちは、 MYSQLの学習を始めた者です。(学習書籍:MySql 入門以前) レコードに連番を振る際に自動連番属性を持たせるためにはテーブルに対してインデックスを付加しないといけないと本に書いてありました。 例)alter table todofuken add index ind1(renban); 何となくは分かるのですが、すっきりしません。 何かこのあたりの事を分かりやすく教えていただけないでしょうか? よろしく御願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • ymmasayan
  • ベストアンサー率30% (2593/8599)
回答No.1

自動連番属性を使うには2つのことが必要です。 1.どこまで振ったか管理する。 2.必要な連番の行を高速に探す。   行の登録場所と連番の順序は必ずしも一致しません。 上記を合理的に実現するためのインデックスだと思いますが。 屁理屈でいえばインデックスが無くても出来ないことは無いはずです。

putitpmatp
質問者

お礼

返信ありがとうございます。 お陰様で意味を理解することができました。

その他の回答 (1)

回答No.2

連番を管理するにはどうすればいいかを考えてください。 (1)既存のデータ中の最大値を得る (2)(1)に+1する (3)重複も禁止する (1)を行うのにインデクスが無ければ、母体データを全件検索することになります。100万件のデータがあるなら、インデクスがないと100万件の全数検索を行わないと、最大値が何か分かりません。 インデクスを定義すれば、構造は一般的にB-TREE構造であり、最大値を求める場合に母体データ数が増えても安定した性能を得られます。 重複がないことを保証するにも、インデクスが無ければ、全数検索してチェックする必要があります。

関連するQ&A