在TEXT数据类型mysql中连接一个字符串

时间:2013-07-04 15:48:52

标签: mysql performance text concatenation

我有一个名为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将管理命令以使其有效工作。

1 个答案:

答案 0 :(得分:1)

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