我有一个名为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的文本到concat,那么将读取15mb,然后连接10个字节的数据,然后再写入15mb+10个字节的数据。
我想问一下是否存在其他方法,以便只在结尾添加要连接的字符串,而不是替换完整的字符串?
所以数据库中只写了10个字节。
可能是我错了,mysql会管理命令使其高效工作。

最佳答案

你的陈述很好。如果update列中有索引,则更新速度可能会慢一些,在这种情况下,可以在更新前禁用该索引或将其删除,并在更新完成后将其重新添加。

关于mysql - 在TEXT数据类型mysql中连接一个字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17474236/

10-12 20:42