我正在为我的网站使用mysql REPLACE INTO语法。下面是我的测试表结构,
id name address
1 Tom US
2 Dick UK
3 Harry US
4 Jony Spain
查询:
REPLACE INTO table_name VALUES (3, 'Roni', 'India')
现在执行这个查询mysql说,
2行受影响。 插入的行ID:4(查询耗时0.0003秒)
有人能解释一下上面提到的文字是什么意思吗?什么 2行受影响?
此致
答案 0 :(得分:2)
两行会受到影响,因为REPLACE INTO将执行DELETE,然后在键冲突时执行INSERT,因此最终会有2个操作,首先是DELETE(受影响的是1行),然后是INSERT(受影响的第2行)。
您可能需要考虑其他解决方案,因为DELETE的成本很高,因为索引需要更新。在许多情况下,基于DUPLICATE KEY UPDATE查询的INSERT ...会更快。
答案 1 :(得分:1)
MySQL REPLACE如UPDATE语句如下:
REPLACE INTO table_name SET column_name1 = value1 AND column2 = value2
答案 2 :(得分:0)
使用如下查询:
EXPLAIN REPLACE INTO table_name VALUES (3, 'Roni', 'India')
注意添加“EXPLAIN”关键字!这样MySQL将解释发生了什么。
但请注意,REPLACE INTO与INSERT INTO相同,但如果存在则将替换该行,如果不存在则将其插入。因此,当存在时,它将删除该行然后插入新行,这就是为什么您有两行受影响的原因。
答案 3 :(得分:0)
在你的情况下它看起来像id没有3被删除然后再次插入。这就是它说2条记录受到影响的原因。你的桌子可能有第3行,Roni和印度插入并删除第3行,哈利,美国