私は最近の同僚との討論で提起された質問があります。複数のテーブルとインデックス付きの行との比較
100,000,000行の表が1つあり、その行のそれぞれに索引付き列(varchar)があるとします。この列には1000の一意の値が存在するため、各値には100,000の行が関連付けられています。私は一意の値(私は上記の値を供給します)の1つに関連するすべての行を検索したいだけでなく、いくつかの追加のフィルタリングロジック(重要ではない)を求めます。
1000個の異なるテーブルに100,000行を格納するのが速く、遅くなる、または速くなるでしょうか。のみを検索するか、上記の方法を使用しますか?
すべてのテーブルが同じスキーマを持つと仮定します。
+1また、クエリオプティマイザ**では、実際には多数のテーブルを持つクエリが嫌いです。 – Andomar
また、同じ値_exactを100,000回繰り返している場合は、それを別のテーブルに引き出し、そのテーブルへの外部キー参照を作成することもできます。追加テーブルの追加コストは、** far **の文字列比較を処理する必要性が最も高いです。ガーアントードデータの整合性は素晴らしい副作用です。 (私はフィルタリングが文字列上にあると仮定していましたが、int比較は関係なくもっと良くなりましたか?) –
@ X-Zero:1000個の異なる値を持つと、整数比較のパフォーマンス上の利点は、つまり、文字列を可能な限り識別子として使用しないようにすることは、まだ(現実的な)ベストプラクティスです。 – MatBailie