我可以在INDEX上使用ON DUPLICATE KEY更新吗?

时间:2013-06-19 14:05:36

标签: php mysql

我有一个表结构,它有一个主键,然后是一个基于两列名为user_idx_name的复合索引。如果我使用ON DUPLICATE KEY UPDATE它会查看 PRIMARY 键, user_idx_name 键还是两者都有?

我的表格结构如下:

Keyname         Type    Unique    Packed    Column    Cardinality    Collation  Null  Comment
PRIMARY         BTREE    Yes        No        id        67420          A        
user_idx_name   BTREE    Yes        No        user_id   67420          A        
                                              file_name 67420          A 


INSERT INTO table1
(`col1`, `col2`, `col3`, `col4`)
VALUES
('val1', 'val2', 'val3', 'val4')
ON DUPLICATE KEY UPDATE
`col2`='val2',
`col3`='val3', [...]

我是否需要指定名为user_idx_name的INDEX KEY?

1 个答案:

答案 0 :(得分:3)

http://dev.mysql.com/doc/refman/5.7/en/insert-on-duplicate.html

  

如果指定ON DUPLICATE KEY UPDATE,并且插入的行会导致 UNIQUE索引或PRIMARY KEY 中出现重复值,则MySQL会执行旧行的UPDATE。