让我说我有这张桌子
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'
我知道使用主键时查询的执行速度要快得多。但是因为我只在最后一个查询中使用了部分主键,所以它的执行速度不会和第一个查询一样快吗?
答案 0 :(得分:2)
创建复合索引时,需要先使用密钥的第一部分,然后才能利用第二部分。在提供的示例中,"其中account =' Acc1'",将不使用主键索引,因为查询中未引用数字。索引搜索需要另一个帐户索引。
所有企业级数据库引擎都提供了一种显示执行计划的机制(正如@Ryan Vincent所讨论的那样)。我强烈建议您熟悉此实用程序,以便调整性能不佳的查询。