0

ユーザーグループ (多対多の関係) があり、ジレンマがあります。ユーザーがデータベースに2つのクエリを実行するグ​​ループに既に含まれているかどうかを確認できます(チェックと挿入)。または、user_idとgroup_idに一意のインデックスを配置し、新しい行を挿入して、とにかく正しいユーザーグループになります(ユーザーがそのようなグループを持っている場合は失敗します)。

質問: このようなテーブルに何百万行もある非常に大きなアプリケーションでパフォーマンスが向上する方法はどれですか?

PS。一意の制約以外の理由で 2 番目の方法が失敗する可能性があることは承知しており、一部の人にとっては悪い習慣と思われるかもしれません。

4

1 に答える 1

1

最初の方法がうまく機能するためにも、インデックスが必要になるため、一意のインデックスが必要になると思います。

パフォーマンスのために、2 番目のアプローチを実行すると、挿入を行うときにインデックスが適切に配置されている場合に一意性が再度チェックされるため、より良い結果が得られます。

私は 2 番目のアプローチを行い、必要な例外処理を適切に行います。

于 2013-10-26T19:30:42.010 に答える