首页 > 解决方案 > 复合或单一唯一索引约束?

问题描述

我有一张大约有 30 列的大桌子。我想用其中的 10 个来创建一个唯一的约束。

由于我的表是 24 小时临时数据,我也可以将 10 个列值连接到一个附加列中,最后只有 1 个唯一列。

我的目标是LOAD DATA INFILE进入一个临时表,然后每 24 小时更新一次主表。在此期间,SELECT ... ON DUPLICATE KEY UPDATE <fields>我需要唯一约束。

问题:从这个角度来看,在多列而不是仅一个列上创建唯一约束有什么好处?

标签: mysqlsql

解决方案


多列唯一约束和单列唯一约束之间没有显着差异。如果您需要运行单独引用其中一列的查询,我不建议仅将这些列连接在一起。您将注定要永远运行 SUBSTR() 函数,并使查询变得不必要地复杂。

无论哪种方式,您都应该知道索引有字节限制。如果您尝试创建超过 10 个 varchar 列的唯一键(甚至是非唯一键),它们最好是短的。


推荐阅读