質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

データベース設計

データベース設計はデータベースの論理的や物理的な部分を特定する工程です。

Q&A

解決済

1回答

755閲覧

MySQLのカラム拡張の際にインデックスは更新されるのか

salmonosushi

総合スコア19

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

データベース設計

データベース設計はデータベースの論理的や物理的な部分を特定する工程です。

0グッド

0クリップ

投稿2021/04/08 06:24

編集2021/04/08 06:34

MySQLのカラム拡張を行おうとしたところ(varchar200→500に増やしました)
Specified key was too long; max key length is 1000 bytes
エラーが発生しています。

MyISAMだと1000バイトが上限であり、
インデックスのサイズが1000バイトを超えているためエラーになっていると考えています。

カラム拡張すると、インデックスは更新されるんでしょうか?

インデックスは、DBの検索を高速化するため、検索用の別のテーブルを持っているというイメージです。

DBよく分かっておらず、基本的なところですみません。
調べたところ、insertするときにインデックスは更新されると書いてましたが、
カラム拡張についてが分かりませんでした。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Orlofsky

2021/04/08 06:30

カラム拡張って桁数を増やしたのでしょうか? 質問は修正できますから、明記しては?
salmonosushi

2021/04/08 06:34

情報が足りなかったみたいですみません。修正しました。
guest

回答1

0

ベストアンサー

そのエラーはインデックスを更新した時というより、カラムの変更時のチェックによるメッセージです。

カラム拡張すると、インデックスは更新されるんでしょうか?

そもそも連動していないと不整合な状況になるので、拡張というか変更があれば更新されるはずです。

ピンポイントな内容は探しきれていませんが以下のような記述を見つけました。
13.1.7 ALTER TABLE 構文

MyISAM テーブルに対して ALTER TABLE を使用した場合、一意でないインデックスはすべて (REPAIR TABLE として) 別のバッチに作成されます。多くのインデックスがあるときは、この方法で ALTER TABLE がはるかに早くなります。
MyISAM テーブルの場合は、キーの更新を明示的に制御できます。ALTER TABLE ... DISABLE KEYS を使用して、一意でないインデックスの更新を停止するよう MySQL に指示します。次に、ALTER TABLE ... ENABLE KEYS を使用して、不足しているインデックスを再作成します。MyISAM はこれを、キーを 1 つずつ挿入するのに比べてはるかに高速な特殊なアルゴリズムで実行するため、一括挿入操作を実行する前にキーを無効にすると大幅な高速化が得られます。ALTER TABLE ... DISABLE KEYS を使用するには、先に説明した権限に加えて INDEX 権限が必要です。

一意でないインデックスは、無効になっている間、有効なときにはこのインデックスを使用する SELECT や EXPLAIN などのステートメントで無視されます。

更新を停止させることが出来るというのは、逆説的には更新されているという事だと思います。

投稿2021/04/08 06:46

編集2021/04/08 07:01
sazi

総合スコア25206

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

salmonosushi

2021/04/08 08:24

インデックスも更新されるということが分かったので、解決できました。 公式文献を探していただいて、ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問