我有一个名为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/