0

我有一个表结构,它有一个主键,然后是一个基于名为 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 ?

4

1 回答 1

4

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

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

于 2013-06-19T14:08:12.313 回答