分别在2列上建立索引和在每列上建立索引之间有什么区别?

Ray*_*Ray 4 indexing database-design

我是数据库索引的新手,如果我在表中有2列是很好的索引选择,例如,

[Posts](    
   [PostID] [int] IDENTITY(1,1) NOT NULL,
   [UserName] [nvarchar](64) NOT NULL,
   [ApplicationType] [smallint] NOT NULL,
   ...
)
Run Code Online (Sandbox Code Playgroud)

在这种情况下,PostID将是PRIMARY KEY CLUSTERED索引,然后我想做更多的索引,因为它是一个大表,我想对UserName和ApplicationType做,现在我应该单独索引每个(一个在UserName上,一个在ApplicationType上)或将它们作为一个整体索引(UserName上的一个索引,ApplicationType一起)?在进行不良练习之前,我可以拥有的索引数量是否有限制?对此有什么一般的经验法则?

谢谢,

射线.

Bil*_*win 8

请记住复合索引的电话簿规则:电话簿有效地使用姓氏,名字编制索引.这是一个复合指数.

如果您搜索名为"Smith,John"的人,那么第一个名称是索引的一部分会很有帮助.一旦找到姓氏为"Smith"的条目,您就可以快速找到"John".

但如果您需要搜索名为"John"的所有人,那么电话簿的索引编制无效 - 您无论如何都必须搜索整本书.

因此,如果您正在搜索索引中指定的第一列,以及可选的第二列等,那么复合索引是很好的.但是如果您的搜索跳过索引中最左侧的列,则对该搜索没用.