• ベストアンサー

プライマリーキー

プログラムど素人です プライマリーキーはつけといたほうがいいでしょうか? プライマリーキーがないとプライマリーキー以外のカラムをselectするとき遅くなるのでしょうか? プライマリーキーのカラム名はid以外でもいいですか? 質問2 phpmyadminからindexを他のカラムにつけた場合はそのカラムにindexつけた後に追加された行も自動的にindexがついていますか? よろしくお願いします

  • flash0
  • お礼率97% (297/306)
  • MySQL
  • 回答数1
  • ありがとう数4

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4849/10263)
回答No.1

>プライマリーキーはつけといたほうがいいでしょうか? 普通付けますが、必須ではないです。 >プライマリーキーがないとプライマリーキー以外のカラムをselectするとき遅くなるのでしょうか? それは関係ありません。 >プライマリーキーのカラム名はid以外でもいいですか? もちろんOKです。 >phpmyadminからindexを他のカラムにつけた場合はそのカラムにindexつけた後に追加された行も自動的にindexがついていますか? indexは、カラムや複数カラムに付く物です。行の挿入削除変更でindexは自動的に更新されます。

flash0
質問者

お礼

回答ありがとうございます 疑問が解けてすっきりしました

関連するQ&A

  • 途中からプライマリーキーを作成

    プログラム初心者です テーブルに途中からプライマリーキーを作成することはできますか? idとゆうカラムを追加で作成して主キーにしようとしたのですがエラーがでます idはint型でテーブルには100行あるのですが全部0になっているのが原因かもしれません このidカラムに1~100まで数字を与える方法はありますか? よろしくお願いします

    • ベストアンサー
    • MySQL
  • INDEXと検索

    INDEXが着いていないカラムをSELECTで検索しても他のカラムにプライマリーキーがあれば、検索は高速になるのでしょか? テーブル ID、NAME IDにプライマリーキーが付いていて、NAMEのカラムのみを検索するときにも高速になるのでしょうか?

    • ベストアンサー
    • MySQL
  • phpMyAdminのエクスポートについて

    phpMyAdminでテーブルをエクスポートして、違うテーブルにインポートしていれたいのですが、sqlファイルでエクスポートしようとすると、自動でWHEREの中身がid = "1234"とかになってしまって、勝手にidがひも付けされてしまいます。おそらくその原因はプライマリーキーだからなのでしょうが、WHEREの中身をdata1 = "23456"みたいにidではない違うカラムにひも付けすることはできるのでしょうか? data1をプライマリーキーにしようとしてもできませんでした(重複してないはず。) 回答よろしくお願いします!

  • sqlite3でrowid以外にid必要ですか?

    sqlite3に挑戦中です。 これまでmysqlを使用していました。 sqlite3ですが、rowidというコラム(行番号)が自動的に付加しますね。 当初idとかnoというPRIMARY KEYをつけていたのですが、INSERTができないためidコラムをDrop Columnしました。 でも、抽出するときにrowidでSELECTしようと思ったら、抽出できるわけないですね。できる方法があったら、教えてください。 ↓こんなふうにrowidをセットしようと思ったら見事に空白でした。file= $s .= '<a href =./index.php?mode=check&file=' . $row["rowid"] . '>' . $row["name"] . '</a><br>'; ということはやっぱりid、noというプライマリーキーは必要でしょうか? もちろんnameが一意なので条件設定できますが、スマートでない気がします。 AUTO INCREMENTしてくれないので、一々、値を入れていかないといけないのでしょうか?mysqlだったら、自動的に番号を付加してくれるので、NULLや空白を入れていたのですが。 つまらない質問ですが、確認のためよろしくお願いします。

  • UNIQUEをつけたときのINDEXテーブル

    テーブル作成時、カラムにUNIQUEをつけると自動でインデックステーブルが作成されますが、このインデックステーブルで、通常のselect検索も早くなるのでしょうか? 具体的には、ユニークなカラムidを持つテーブルtableA create table tableA( id INTEGER UNIQUE, some_column INTEGER ); を作ったあとで、そのidにあらためて CREATE INDEX id ON tableA (id); と、インデックスを張る必要があるのでしょうか。 よろしくお願いします。

  • テーブルで一番古いレコードだけをSELECTしたい

    テーブルで一番古いレコードだけをSELECTしたいのですが、どうすれば良いでしょうか? ■背景 ・テーブルからデータを取得しようと思ったら、「id」及び「autoincrement」に該当するカラムがありませんでした ・日付に該当するカラムもありません ・「phpMyAdmin」で確認すると、いつも同じ並び順で表示されるので、格納したレコード順で表示されているのではないかと思いました ■質問 ・この時、そのテーブルで一番古いレコードだけをSELECTしたいのですが、どうすれば良いでしょうか? ・where?

    • ベストアンサー
    • MySQL
  • postgresqlにて全レコードのupdate

    PostgreSQLの全レコードを順次Updateしたいのですが、 SQLの記述方法がわかりません。 [やりたいこと] ユーザ情報を保持しているテーブルに、新しく"ID_TMP"カラムを追加。 カラム"ID_TMP"に、ユーザIDを保持しているカラム"ID_INFO"の内容を書き込む。 コピーしたいレコードが単一の場合、次のSQLで可能だと思うのですが、 テーブルに保持している全レコードを順次処理する方法を教えてください。 update [テーブル名] set ID_TMP = (select ID from [テーブル名] where id = [ID名]); 宜しくお願いいたします。

  • 複数のindexについて

    CREATE TABLE `test` ( `id` INT(8) , `num` INT(8) , 他多数 (省略) ) このようなテーブルがある場合、以下の2種類のインデックスのつけ方にどのような違いがあるのでしょうか? phpmyadminで確認すると、(1)はインデックスが合体しており、(2)はインデックスが個別に分かれています。 (1) ALTER TABLE `test` ADD INDEX ( `id` , `num` ) (2) ALTER TABLE `test` ADD INDEX ( `id` )   ALTER TABLE `test` ADD INDEX ( `num` ) ちなみに、以下のようなSELECT文を用いる場合には、どちらのインデックスが適していますか? SELECT * FROM test WHERE id='●' and num > '△' ( mysql5,MyISAM )

    • ベストアンサー
    • MySQL
  • Select文で結合した時に、重複カラムが存在するのでテーブル名を先頭

    Select文で結合した時に、重複カラムが存在するのでテーブル名を先頭か末尾に自動でカラム名に付与して表示したいのですが、いい方法はないでしょうか? (asで1個1個変えるのではなく・・・) SELECT TABLE_A.*,TABLE_B.* FROM TABLE_A LEFT JOIN TABLE_B ON TABLE_B.ID = TABLE_A.ID 表示 : TABLE_A_ID | TABLE_B_ID みたいのを考えています。

    • ベストアンサー
    • MySQL
  • 削除ふらぐ

    プログラム初心者です phpとmysqlで簡単な掲示板を作りました 一つのテーブルでsure_idごとにスレッドをつくり、resu_idでレス番号をつくっています そこで削除フラグがある場合にはそのレスを表示しないようにしたいのです 素人なのでこんな方法しか思い浮かばないのですがこれで大丈夫でしょうか? 5番のスレッドを全て取得し、削除フラグがない行を全て取得 SELECT * FROM bbs WHERE sure_id=5 and dll_flg=0 質問1 削除フラグはどのような立て方が良いでしょうか?0と1でしょうか? 質問2 削除フラグのカラムにもインデックスを張ったほうが速いですか? 質問3 phpでいちいちif文で判定するよりsqlで表示判定したほうが早いですよね? よろしくお願いします

    • ベストアンサー
    • MySQL