索引一个包含3个整数字段的mysql表

时间:2010-05-27 19:18:09

标签: mysql

我有一个包含3个整数字段的mysql表。没有一个字段具有唯一值 - 但它们中的三个组合是唯一的。

当我查询此表时,我只搜索第一个字段。

建议使用哪种方法来索引此类表? 在3个字段上有多字段主键,或在第一个字段上设置索引,这不是唯一的?

谢谢, Doori Bar

4 个答案:

答案 0 :(得分:2)

两者。您需要多字段主键以确保唯一性,并且您希望第一个字段上的索引在搜索期间提高速度。

答案 1 :(得分:0)

您可以在三个字段上合并UNIQUE Constraint以符合您的数据质量标准。如果您主要通过Field1进行搜索,那么您应该有一个索引。

您还应该考虑如何JOIN此表。

您的索引应该首先支持更大的工作量 - 您必须查看执行计划以确定最适合您的工作。

答案 2 :(得分:0)

主键会阻止您的应用程序意外插入欺骗行。你可能想要那个。

通过在第一列聚簇上创建索引以获得更好的性能,正确地对PK中的列进行排序。比较查询的运行方式(PK存在)以及第一列上是否有索引。

答案 3 :(得分:0)

如果您使用的是InnoDB,则必须具有聚簇索引。如果你没有指定一个,MySQL无论如何都会在后台使用一个。因此,您也可以通过组合所有三列来使用群集(唯一)主键。

主键也可以防止重复,这是一个奖励。

如果你要返回所有三个整数字段,那么你将有一个覆盖索引,这意味着数据库甚至不必触及实际记录。它将从索引中获得所需的一切。

唯一需要注意的是插入(和附加)。更新聚簇索引(尤其是在多列上)确实会对性能造成一定的影响。由您来测试并确定最佳方法。