我在多租戶環境中看到關於選擇PK的不同觀點。假設有一張表Employees。我創建了我的僱員表是這樣的:在SQL Server上的多租戶環境中定義PK
EmployeeId INT IDENTITY PRIMARY KEY,
TenantId INT,
FirstName NVARCHAR(100),
LastName NVARCHAR(100)
我知道我需要使用TenantId在我所有的問題,所以我除了在TenantId非聚簇索引創建的,所以我可以寫一些查詢,像這樣:
如果我需要所有員工一個特定租戶:
Select EmployeeId, FirstName, LastName
where TenantId = 1
如果我需要一個特定租戶一個員工:
Select EmployeeId, FirstName, LastName
where EmployeeId = 1 and TenantId = 1
現在在Employee表上測試了大約100000條記錄和一個租戶我對第一個查詢進行了全面掃描(即使我在TenantId上定義了非集羣索引,我猜這是正常的,因爲我的表中有一個Tenant它需要掃描所有的表)和索引查找第二個。
這是一個好方法,我是否需要在集羣索引中添加TenantId?
如果在TenantId –
@stevenackley上有非聚集索引,則不應該進行掃描。 。 。不對。 SQL Server足夠聰明,在任何情況下都不會使用這樣一個簡單的規則。 (我相信你所說的在一些數據庫如MySQL和Postgres中是真的) –