我有一个包含employee_name,state,city和zip的表。我必须使用单独的城市,州和拉链表以及一个包含所有城市,州和邮政列的表来加入。
那么我应该在哪个列上创建索引:city,state,zip分别或city,state和zip的组合索引。
这是一个理论问题,请帮助我理解索引和性能问题。
答案 0 :(得分:1)
如果我理解你的问题,你需要的是City State Zip表上的数字主键列。然后带有employee_name的表有一个列,其中包含来自另一个表的相应键。 City,State Zip表当然在主键列上有一个索引。您可能还需要employee_name列的索引。
尽管有可能,但为了提高效率,通常不会在三个文本列中抛出索引。这将产生一个相当大的指数。因此,我们创建了所谓的代理键。在这种情况下,正如我所建议的,代理键应该是一个简单的整数。三个文本列,City,State,Zip一起形成所谓的自然键。但是这个自然键实际上包含增加其大小的冗余信息。例如,它们是邮政编码和州之间的依赖关系。