我有一个表结构,它有一个主键,然后是一个基于两列名为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?
答案 0 :(得分:3)
http://dev.mysql.com/doc/refman/5.7/en/insert-on-duplicate.html
如果指定ON DUPLICATE KEY UPDATE,并且插入的行会导致 UNIQUE索引或PRIMARY KEY 中出现重复值,则MySQL会执行旧行的UPDATE。