仅通过主键的一部分搜索有效吗?

时间:2017-03-17 18:36:21

标签: sql

让我说我有这张桌子

Extensions

Id -> Primary Key
Number
Account
DateCreated
Etc...

我知道通过ID搜索扩展名非常有效:

select * from Extensions where Id = 5

但如果我有这个表:(注意主键是两列的组合)

Extensions

Number -> Primary Key
Account -> Primary Key
DateCreated
Etc...

如果是这样的话会有效吗?

select * from Extensions where Account = 'Acc1'

我知道使用主键时查询的执行速度要快得多。但是因为我只在最后一个查询中使用了部分主键,所以它的执行速度不会和第一个查询一样快吗?

1 个答案:

答案 0 :(得分:2)

创建复合索引时,需要先使用密钥的第一部分,然后才能利用第二部分。在提供的示例中,"其中account =' Acc1'",将不使用主键索引,因为查询中未引用数字。索引搜索需要另一个帐户索引。

所有企业级数据库引擎都提供了一种显示执行计划的机制(正如@Ryan Vincent所讨论的那样)。我强烈建议您熟悉此实用程序,以便调整性能不佳的查询。