• ベストアンサー

オートインクリメントについて

カラムはidとnameです AUTO_INCREMENTをidにつけました googleで検索したら、「AUTO_INCREMENTをつけた場合はindexをつけなくてはいけない」 と書いてあったのですが、なぜindexをつけないといけないのでしょうか?indexなしだとよくないですか? 今あるidのカラムにsqlでindexを付けることはできますか? よろしくお願いします

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

  • ベストアンサー
  • mpro-gram
  • ベストアンサー率74% (170/228)
回答No.2

mysql の場合、auto_increment 属性を付けたら、何らかのindexも設定しないとエラーになるので、create table 出来てるのなら、primary key とか付けているのでは?phpmyadmin で作成したのなら自動付加してくれてるのでしょう。 index必要性について マニュアル参照 http://dev.mysql.com/doc/refman/5.1/ja/create-table.html コマンドラインクライアントでチェックするなら、show構文で show create table `tbl_name`;

flash0
質問者

お礼

お答えいただきありがとうございます primary keyはidにつけてありました primary keyを付けるとindexも設定していることになるのですか? db始めてなので不安になってしまってひつこくてすいません >show create table `tbl_name`; 便利ですね!さっそくつかってみました、しかし。indexらしきものがないです CREATE TABLE `table` ( `id` mediumint(9) NOT NULL AUTO_INCREMENT, `name` char(20) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

>AUTO_INCREMENTをつけた場合はindexをつけなくてはいけない 微妙な表現ですね AUTO_INCREMENT属性がつくのはユニーク属性をもったintのカラムです。 ユニーク属性自体にインデックスが設定されるので、 AUTO_INCREMENTを設定しているのであれば逆に必ずインデックスされていると 考えてよいと思います

flash0
質問者

お礼

お答えいただきありがとうございます >AUTO_INCREMENTを設定しているのであれば逆に必ずインデックスされていると 考えてよいと思います とゆうことは、インデックスはすでに付いているとゆうことですか? phpMyAdminで確認できればよかったんですが、indexらしきものが見当たらなかったので