1

MySQL がインデックスを更新する状況を特定しようとしています。次のテーブルがあるとします。

CREATE TABLE MyTable (
  ID INT NOT NULL AUTO_INCREMENT,
  MyIndexedColumn VARCHAR NOT NULL,
  MyNonIndexedColumn VARCHAR,
  PRIMARY KEY (ID),
  INDEX MyNewIndex(MyIndexedColumn)
)

次に、SQL クエリを実行して行を挿入します。

INSERT INTO MyTable (MyIndexedColumn, MyNonIndexedColumn) 
VALUES ('MyTestValue', 'MyTestValue');

ここで、次のステートメントを実行すると、インデックス付けされた列の値が変更されます

UPDATE MyTable 
SET   MyIndexedColumn = 'MyNewIndexValue', 
      MyNonIndexedColumn = 'somenewvalu  New Value' 
WHERE ID = 1;

この種のクエリが常に入ってきます。書き込み(挿入/更新)が多く、読み取りはほとんどありません

  1. これによりパフォーマンスの問題が発生しますか?
  2. これによりインデックスが断片化され、使用できなくなりますか?
  3. どうすればこの問題を回避できますか?

また、Oracle の方が優れているでしょうか、それとも Mysql でこの種のデータを処理できますか?

4

1 に答える 1