0

私たちのマルチテナントアプリwhere account_id = ...では、(ほぼ)行われたすべてのクエリに追加されます。ほとんどすべてのテーブルにaccount_id列があります。

このような設定では、外部キーのインデックスをテーブルに追加するときに、常にaccount_idをインデックスに含める必要がありますか?

したがって、たとえば:

add_index 'projects', ["customer_id"]
OR
add_index 'projects', ["customer_id","account_id"]

アプリケーションのセットアップ方法では、account_idの条件がないと、プロジェクトテーブルに対してクエリが実行されないため、2番目のオプションが正しいと思います。しかし、私はデータベースの専門家ではありません。

私たちの場合の最良のアプローチは何ですか?

4

1 に答える 1

0

これは、特定の顧客ID値のProjectsテーブルに存在する行数に大きく依存します。おそらく数百を超えることはないのであれば、アカウントID列をわざわざ追加するかどうかはわかりません。もちろん、これを実際に判断する最良の方法は、インデックスがある場合とない場合で、パフォーマンステストを行うことです。

于 2012-12-09T21:29:08.830 に答える