在主键上创建和索引有什么好处吗?

时间:2011-09-20 13:02:54

标签: mysql database indexing primary-key database-performance

我查了这篇帖子:

What's the difference between primary key, unique key, and index in MySQL?

并找到声明:

  

另请注意,定义为主键或唯一键的列会在MySQL中自动编入索引。

基于此,我有两个问题:

  • 我是否可以安全地假设在主键本身上创建索引没有性能优势,因为主键(按设计)是索引?

也许更重要的问题是:

  • 如果您正在做经典示例,人们会引用,基于lastName和firstName执行SELECT,并且该表具有您经常选择的主键,您是否会将索引创建为(primary_key,lastName,firstName)或just(lastName,firstName),因为主键已经是索引了?

2 个答案:

答案 0 :(得分:1)

对于你的第一个问题,yets,你可以安全地假设。

第二个问题:

索引有助于加快搜索速度 - 就像书中的索引一样。它们可以帮助数据库引擎跳转到正确的记录,就像索引可以帮助您跳转到书中的正确页面一样。

您可能自己创建的索引的好处取决于您打算如何搜索数据。

在您的示例中,如果您要在应用中搜索它们,我会在名称字段上创建一个INDEX。

答案 1 :(得分:0)

如果PRIMARY_KEY上有索引,LastName, FirstName上有索引,则不会自动表示PRIMARY_KEY, LastName, FirstName上的索引。

但是,在这种情况下,主键字段通常是多余的,因为您有不同的索引可供使用。