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;
この種のクエリが常に入ってきます。書き込み(挿入/更新)が多く、読み取りはほとんどありません
- これによりパフォーマンスの問題が発生しますか?
- これによりインデックスが断片化され、使用できなくなりますか?
- どうすればこの問題を回避できますか?
また、Oracle の方が優れているでしょうか、それとも Mysql でこの種のデータを処理できますか?