在多租户DB中索引TenantID

Mat*_*att 3 sql-server indexing performance multi-tenant

我正在为应用程序创建一个多租户数据库.我已经在每个表格方法中使用了TenantID,它运行得非常好.我正处于性能调整阶段.

我的问题是,是否应该为每个表中的每个TenantID编制索引以进行优化搜索,因为db上的每个查询都将在此列上进行过滤?

期待任何建议.

谢谢

Cod*_*ian 5

尽管在编制索引时需要考虑许多因素,但根据我的经验,(唯一)聚簇索引可以很好地工作,因为tenantId + PK所有PK查询都可以在复合键上进行搜索.

这具有将tenantID放在非聚簇索引中的附加优点,因为SQL Server使用聚簇键作为从非聚簇索引返回表的引用.

请注意页面拆分,因为插入几乎总是在页面中间,这种方法肯定会优化读取.考虑填充系数为70并观察您的碎片,确保定期进行索引维护(无论如何都要这样)

祝你好运.

  • 我同意,“tenantId”应该是所有聚集索引键中最左边的列,并且所有谓词和连接都应该包含“tenantId”。 (2认同)