MEDIMTEXT
タイプの列を含む testing という名前のテーブルがあります。
mysql> desc testing;
+-------+------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| id | tinyint(4) | YES | | NULL | |
| data | mediumtext | YES | | NULL | |
+-------+------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
テーブルの内容は次のようになります--
mysql> select * from testing;
+------+--------------------------------+
| id | data |
+------+--------------------------------+
| 1 | This is the first data entered.|
+------+--------------------------------+
1 row in set (0.00 sec)
data
id=1 で指定された列で、 「Concat me」などの別の文字列を連結して、 「これは最初に入力されたデータです。Concat me」のようにします。
を使用してそれを行うことができました
UPDATE testing SET data=CONCAT(data,'Concat me') WHERE id=1;
しかし、最初にフィールド全体が読み取られ、次に連結され、最後に新しく作成された文字列が前のものに置き換えられると思います。
テキストが長すぎる場合、そうするのに多くの時間がかかります。
同様に15 MB
、テキスト10 bytes
と連結するテキストがある場合、15 MB が読み取られ、次に 10 バイトのデータが連結され、次に 15 MB+ 10 バイトのデータが書き戻されます。
連結する文字列を完全に置き換えるのではなく、最後に追加するだけの方法が他にあるのでしょうか。
10 バイトだけがデータベースに書き込まれるようにします。
私が間違っている可能性があり、mysql はコマンドを管理して効率的に機能させます。