我对数据库很感兴趣,并且已经开始使用 SQL Server 2008,我读到在表上使用适当的索引可以帮助提高数据库的整体性能。
我有两个表,使用 SQL 数据生成器在每个表中自动生成 100 万行,表 1 是客户表,表 2 是租户表,设计如下:
Customer Renters
CustomerID (PK) RentersID (PK)
ForeName (Non clustered index) StartDate
SurName EndDate
Email RentalNights
CustomerID (FK) (Non Clustered index)
我读过在最常用的列和外键列上放置非聚集索引将有助于提高性能。我在使用索引之前和使用索引之后创建了一个简单的连接查询,但对我来说,我看不到使用索引时性能的提高,任何人都可以帮助我吗?下图是索引前和使用后的执行计划。
索引前:
索引后:
编辑: 这是我正在使用的 SQL 语法
SELECT cu.ForeName + ' ' + cu.SurName AS 'Name'
FROM dbo.Customers cu
INNER JOIN dbo.Renters re ON re.CustomerID = cu.CustomerID
WHERE cu.ForeName = 'Daniel'
编辑 这是我使用以下回复中发布的索引语法:
CREATE NONCLUSTERED INDEX [ix_Customer] ON [dbo].[Customers]
(
[ForeName] ASC,
[CustomerID] ASC
)
INCLUDE ( [SurName]) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO