【发布时间】:2013-07-02 16:36:51
【问题描述】:
我有一个名为 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” 使其看起来像 “这是输入的第一个数据。联系我”
我可以通过使用来做到这一点
UPDATE testing SET data=CONCAT(data,'Concat me') WHERE id=1;
但我认为它会先读取整个字段,然后连接,最后将新创建的字符串替换为前一个。
如果文本太长,则需要一个有很多时间这样做。
比如 - 如果有 15 MB 的文本和 10 bytes 要连接的文本,则将读取 15 MB,然后连接 10 个字节的数据,然后写回 15 MB+ 10 个字节的数据。
我想问有没有其他方法让要连接的字符串最后添加而不是替换完整的?
这样只有 10 个字节被写入数据库。
可能是我错了,mysql 将管理命令以使其有效地工作。
【问题讨论】:
标签: mysql performance text concatenation