2016-11-05 4 views
1

私は、マルチテナント(同じデシベル、同じスキーマ)を実装するエンティティフレームワークを使用しています:TenantId列のインデックスを作成する必要がありますか?

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

もちろん、テナントでデータをフィルタリングするだけでなく、適切なインデックスの存在がパフォーマンスにとって重要です。さらに、データベースのロードやデータベースのメンテナンスの手順によって、追加の最適化手段を検討することができます。インデックスのクラスタ化、パーティション化されたテーブルの使用、フェデレーテッドデータベースサーバの使用など。

テナントをデータベースレベルで分離する場合があります。パラメトリック・ビューとストアド・プロシージャを使用して、データベースの物理レベルと提示レベルを分離できます。とにかく、本番データベースの最適化は、EF自動生成データベーススキームから遠く離れています。

関連する問題