人に聞けない痔の悩み、これでスッキリ >>

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

A 回答 (2件)

自動連番属性を使うには2つのことが必要です。


1.どこまで振ったか管理する。
2.必要な連番の行を高速に探す。
  行の登録場所と連番の順序は必ずしも一致しません。

上記を合理的に実現するためのインデックスだと思いますが。
屁理屈でいえばインデックスが無くても出来ないことは無いはずです。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/10/27 09:12

連番を管理するにはどうすればいいかを考えてください。



(1)既存のデータ中の最大値を得る
(2)(1)に+1する
(3)重複も禁止する

(1)を行うのにインデクスが無ければ、母体データを全件検索することになります。100万件のデータがあるなら、インデクスがないと100万件の全数検索を行わないと、最大値が何か分かりません。
インデクスを定義すれば、構造は一般的にB-TREE構造であり、最大値を求める場合に母体データ数が増えても安定した性能を得られます。

重複がないことを保証するにも、インデクスが無ければ、全数検索してチェックする必要があります。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す


人気Q&Aランキング