mysql - 复合或单一唯一索引约束?
问题描述
我有一张大约有 30 列的大桌子。我想用其中的 10 个来创建一个唯一的约束。
由于我的表是 24 小时临时数据,我也可以将 10 个列值连接到一个附加列中,最后只有 1 个唯一列。
我的目标是LOAD DATA INFILE
进入一个临时表,然后每 24 小时更新一次主表。在此期间,SELECT ... ON DUPLICATE KEY UPDATE <fields>
我需要唯一约束。
问题:从这个角度来看,在多列而不是仅一个列上创建唯一约束有什么好处?
解决方案
多列唯一约束和单列唯一约束之间没有显着差异。如果您需要运行单独引用其中一列的查询,我不建议仅将这些列连接在一起。您将注定要永远运行 SUBSTR() 函数,并使查询变得不必要地复杂。
无论哪种方式,您都应该知道索引有字节限制。如果您尝试创建超过 10 个 varchar 列的唯一键(甚至是非唯一键),它们最好是短的。
推荐阅读
- kubernetes-helm - 使用helm install时如何支持节点选择
- python - pip 下载而不执行 setup.py
- wpf - WPF:Datagrid对绑定到同一集合的列表框进行排序
- python - 无法抓取数据中的数据
- 来自维基百科演员部分的标签具有多个标签
- c - execvp() 没有正确输出
- asp.net-mvc - 当日期时间对象转换为字符串时,月份名称的语言与文化信息不匹配
- http - 如何通过 Guile Scheme 检查 URL 是否存在?
- angular - Angular 6 Caching with Http Interceptor - 代码中的 Map 运算符以某种方式改变缓存的 HttpResponse
- google-colaboratory - Google Colab 上的 Shift 选项卡
- cassandra - Cassandra 新节点未添加到集群