3

我有一个名为 testing 的表,其中包含一个MEDIMTEXT类型的列。

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)

在以 id=1 命名的列data中,我想连接另一个字符串 ex- “Concat me”,使其看起来像“这是输入的第一个数据。Concat me”

我可以通过使用

 UPDATE testing SET data=CONCAT(data,'Concat me') WHERE id=1;

但我认为它会首先读取整个字段,然后进行连接,最后将新制作的字符串替换为前一个字符串。
如果文本太长,这样做会花费很多时间。
like-如果有15 MB文本和10 bytes要连接的文本,则将读取 15 MB,然后连接 10 个字节的数据,然后写回 15 MB + 10 个字节的数据。
我想问是否存在任何其他方法以便将要连接的字符串添加到最后而不是替换完整的?
所以只有10个字节被写入数据库。
可能是我错了,mysql 将管理命令以使其有效工作。

4

1 回答 1

1

你的update说法完全没问题。如果您的data列中有索引,那么是的,您的更新可能会更慢,在这种情况下,您可以禁用索引或在更新之前将其删除,并在更新完成后将其添加回来。

于 2013-07-04T16:01:53.287 回答