我有一个包含3个整数字段的mysql表。没有一个字段具有唯一值 - 但它们中的三个组合是唯一的。
当我查询此表时,我只搜索第一个字段。
建议使用哪种方法来索引此类表? 在3个字段上有多字段主键,或在第一个字段上设置索引,这不是唯一的?
谢谢, Doori Bar
答案 0 :(得分:2)
两者。您需要多字段主键以确保唯一性,并且您希望第一个字段上的索引在搜索期间提高速度。
答案 1 :(得分:0)
您可以在三个字段上合并UNIQUE Constraint
以符合您的数据质量标准。如果您主要通过Field1进行搜索,那么您应该有一个索引。
您还应该考虑如何JOIN
此表。
您的索引应该首先支持更大的工作量 - 您必须查看执行计划以确定最适合您的工作。
答案 2 :(得分:0)
主键会阻止您的应用程序意外插入欺骗行。你可能想要那个。
通过或在第一列聚簇上创建索引以获得更好的性能,正确地对PK中的列进行排序。比较查询的运行方式(PK存在)以及第一列上是否有索引。
答案 3 :(得分:0)
如果您使用的是InnoDB,则必须具有聚簇索引。如果你没有指定一个,MySQL无论如何都会在后台使用一个。因此,您也可以通过组合所有三列来使用群集(唯一)主键。
主键也可以防止重复,这是一个奖励。
如果你要返回所有三个整数字段,那么你将有一个覆盖索引,这意味着数据库甚至不必触及实际记录。它将从索引中获得所需的一切。
唯一需要注意的是插入(和附加)。更新聚簇索引(尤其是在多列上)确实会对性能造成一定的影响。由您来测试并确定最佳方法。