我有一个名为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将管理命令以使其有效工作。
答案 0 :(得分:1)
您的update
声明完全没问题。如果您的data
列中有索引,那么您的更新可能会更慢,在这种情况下,您可以在更新之前禁用索引或将其删除,并在更新完成后将其添加回来。