我应该将我的TenantId列编入索引吗?

时间:2016-11-05 04:48:29

标签: c# sql sql-server entity-framework ef-code-first

我使用Entity Framework实现多租户(相同的数据库,相同的架构):

public class Report : ITenantEntity
{
  public Report() { }
  [Key]
  public int ReportId { get; set; }
  [Required]
  public int TenantId { get; set; }
  public DateTime DateSent { get; set; }
}

我没有Tenant POCO,只有静态ID。

我应该以某种方式在TenantId上编入索引吗?所有查询现在都涉及对TenantId的过滤,所以我想确保我没有通过没有适当的索引来杀死性能。

1 个答案:

答案 0 :(得分:1)

当然,除了过滤租户数据外,适当的索引的存在对性能至关重要。进一步取决于数据库加载和数据库维护过程可能有助于考虑其他优化措施:使一些索引成为群集,使用分区表,使用联合数据库服务器等。

在某些时候,您可能会使租户在数据库级别被隔离,并且可以使用参数视图和存储过程来隔离数据库的物理和表示级别。无论如何,生产数据库的优化远离EF自动生成的数据库方案。